๐ŸŽˆKotlin ์—ฌํ–‰๊ธฐ 4์ผ์ฐจ

์ดํ˜•์ง„ยท2020๋…„ 9์›” 21์ผ
0

์ฝ”ํ‹€๋ฆฐ ์—ฌํ–‰๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
4/5

์ง€๋‚œ ์—ฌํ–‰

  • ๋ฐ˜๋ณต๋ฌธ (for in, forEach, .., until, step, downTo, while, do while)

์˜ค๋Š˜ ๊ฐ€๋ณธ ๊ณณ

class

์˜ค๋Š˜์€ ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๊ฝƒ class์— ๋Œ€ํ•ด์„œ ๋ฐฐ์›Œ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๊ฐ์ฒด๋ž€ ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.
๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋ฅผ ์œ ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•˜๋Š” ๊ฒƒ์„ ์–˜๊ธฐํ•ฉ๋‹ˆ๋‹ค.
๊ธ€๋กœ ๊ฐ์ฒด๋ฅผ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๊ธฐ์—” ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๊ธฐ์— class๋ฅผ ๋ฐฐ์šฐ๋ฉฐ ๊ฐ์ฒด๋ฅผ ์ดํ•ดํ•ด ๊ฐ€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

class

class๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
class์— ๊ธฐ๋Šฅ(ํ•จ์ˆ˜)๊ณผ ์†์„ฑ(ํ”„๋กœํผํ‹ฐ)๋ฅผ ์„ ์–ธํ•˜๋ฉด ๊ทธ class๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ .
์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

class Animal{
    var age : Int = 0
    var name : String=""
    var furColor : String = ""
    fun bark(){
        println(name+"์ด ์ง–์Šต๋‹ˆ๋‹ค")
    }
}

Animal์ด๋ผ๋Š” class๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. Animal ํด๋ž˜์Šค์—๋Š” ๋™๋ฌผ์˜ ํŠน์„ฑ์„ ์จ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋™๋ฌผ์€ ๋‚˜์ด์™€ ์ด๋ฆ„, ํ„ธ ์ƒ‰ ๋“ฑ ์—ฌ๋Ÿฌ ์†์„ฑ๋“ค์ด ์žˆ์„ ๊ฒƒ์ด๊ณ  ์ง–๋Š” ํ–‰์œ„๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ class๋ฅผ ํ†ตํ•ด์„œ ๋‚˜์ด, ์ด๋ฆ„, ํ„ธ ์ƒ‰์˜ ์†์„ฑ๊ณผ ์ง–๋Š” ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜ ์žˆ๋Š” Animal class๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ์ƒ์„ฑํ•œ class๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ด…์‹œ๋‹ค.

fun main(args: Array<String>) {
    val dog=Animal()
}

๋ฉ”์ธ ํ•จ์ˆ˜์—์„œ Animal class๋ฅผ ํ†ตํ•ด dog๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
dog๋ผ๋Š” ๊ฐ์ฒด์—๋Š” Animal class์˜ ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์ด ๋ถ€์—ฌ๋œ ๊ฒƒ์ด์ฃ .
๊ฐ์ฒด๋ช….์†์„ฑ(๊ธฐ๋Šฅ)์„ ์‚ฌ์šฉํ•˜๋ฉด class๋กœ ๋ถ€์—ฌ๋œ ๊ฐ์ฒด์˜ ์†์„ฑ(๊ธฐ๋Šฅ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ dog๊ฐ์ฒด์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

fun main(args: Array<String>) {
    val dog=Animal()
    print(dog.name)
}


๋ณด๋‹ค์‹œํ”ผ ์•„๋ฌด ๊ฒƒ๋„ ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
class์—์„œ ์ •์˜ํ•œ ์†์„ฑ๋“ค์€ class์— ์–ด๋–ค ์†์„ฑ์ด ์žˆ๋Š”์ง€ ๋ช…์‹œํ•œ ๊ฒƒ์ด์ง€, ๊ฐ์ฒด dog์˜ ์ง์ ‘์ ์ธ ์†์„ฑ์€ ์•„๋‹™๋‹ˆ๋‹ค.
๊ฐ์ฒด์— ์†์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ์ฒด๋ช….์†์„ฑ=๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋ฒˆ๊ฑฐ๋กœ์›€์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ƒ์„ฑ์ž๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž

์ƒ์„ฑ์ž๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
์ฃผ ์ƒ์„ฑ์ž์™€ ๋ถ€ ์ƒ์„ฑ์ž๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๊ด„ํ˜ธ์— ๊ฐ’์„ ๋„ฃ๊ฒŒ ๋˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ฐ’์ด ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

์ฃผ ์ƒ์„ฑ์ž

์ฃผ ์ƒ์„ฑ์ž๋Š” class์˜ ์„ ์–ธ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

class Person1 constructor(name: String) {
    val name: String = name
}
//1๋ฒˆ

class Person2(val name: String) {
}
//2๋ฒˆ
fun main(args: Array<String>) {
    val me = Person1("Lee room")
    val you = Person2("U")
    println(me.name)
    println(you.name)
}


์›๋ž˜๋Š” 1๋ฒˆ ์ฒ˜๋Ÿผclass์ด๋ฆ„ constructor(๋งค๊ฐœ ๋ณ€์ˆ˜ ์ด๋ฆ„ : ์ž๋ฃŒํ˜•)์œผ๋กœ ์ƒ์„ฑํ•˜์ง€๋งŒ
2๋ฒˆ์ฒ˜๋Ÿผ constructor๋ฅผ ์ƒ๋žตํ•  ์ˆ˜๋„, ์ƒ์„ฑ์ž์—์„œ ์„ ์–ธ์„ ํ•จ๊ป˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

init

์ฃผ ์ƒ์„ฑ์ž๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ฑฐ๋‚˜ ์ฃผ ์ƒ์„ฑ์ž์˜ ์‹คํ–‰ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ์— init์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. init์€ class ์ค‘๊ด„ํ˜ธ ์•ˆ์—์„œ init{์‹คํ–‰๋ฌธ}์˜ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ex)

class Person constructor(_name: String) {
    val name: String

    init {
        name = _name
        println("์•ˆ๋…•ํ•˜์„ธ์š” $name ์ž…๋‹ˆ๋‹ค.")
    }
}

fun main(args: Array<String>) {
    val me = Person("LeeRoom")
}


์˜ค๋Š˜์˜ ์†Œ๊ฐ

  • ๋Œ€ํšŒ์ค€๋น„์™€ ํ•™๊ต ์ผ์ •๊ณผ ๊ณต๋ถ€, ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ์„ ๋™์‹œ์— ํ•˜๋Š๋ผ ์‹œ๊ฐ„์ด ๋งŽ์ด ์—†๋‹ค.
  • class๋Š” ๋‚ด์ผ ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜์ž.

0๊ฐœ์˜ ๋Œ“๊ธ€