Menu
Coddy logo textTech

주 생성자

Coddy Kotlin 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 3번째.

대부분의 Kotlin 클래스는 주 생성자에서 시작 값을 받으며, 주 생성자는 클래스 이름 뒤의 괄호 안에 작성합니다. 매개변수 앞에 val 또는 var를 붙이면 동시에 프로퍼티가 됩니다:

class Book(val title: String, var pages: Int)

main 내부:

val book = Book("Dune", 412)
println(book.title)
book.pages += 8
println(book.pages)

출력:

Dune
420

val 또는 var가 없는 매개변수는 인스턴스가 생성되는 동안에만 사용할 수 있으며, 예를 들어 속성을 계산할 때 사용할 수 있습니다. val 속성은 생성된 후 다시 할당할 수 없지만, var 속성은 다시 할당할 수 있습니다:

class Temperature(celsius: Double) {
    val fahrenheit = celsius * 9 / 5 + 32
}

main 내부에서:

val t = Temperature(100.0)
println(t.fahrenheit)

출력:

212.0

생성자 매개변수에는 기본값을 지정할 수 있고 이름으로 전달할 수도 있으므로, 하나의 생성자로 인스턴스를 생성하는 다양한 방법을 처리할 수 있습니다:

class Timer(val seconds: Int, val label: String = "timer")

main 내부:

val egg = Timer(300, "egg")
val quick = Timer(30)
val named = Timer(label = "tea", seconds = 180)
println("${egg.label} ${egg.seconds}")
println("${quick.label} ${quick.seconds}")
println("${named.label} ${named.seconds}")

출력:

egg 300
timer 30
tea 180

클래스 본문 안에서 this는 현재 인스턴스를 가리킵니다. 메서드 매개변수의 이름이 속성과 같을 때 필요합니다:

class Player(var name: String) {
    fun rename(name: String) {
        this.name = name
    }
}

main 내부:

val p = Player("anon")
p.rename("Ada")
println(p.name)

출력:

Ada
challenge icon

챌린지

쉬움

기본 생성자를 사용하여 Account 클래스를 선언하세요. 읽기 전용 owner와 변경 가능한 balance를 포함하며, balance의 기본값은 0입니다. summary()를 추가하고, 이 함수가 Ada has 150을 반환하도록 하세요.

제공된 코드는 소유자를 읽고, 두 번째 줄이 있으면 시작 잔액을 읽습니다. 잔액을 포함하거나 포함하지 않은 상태로 계정을 생성한 후 summary()를 출력합니다.

코드는 Account.kt에 작성하세요. Main.kt에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

fun main() {
    // 제공된 입력/출력 코드: 그대로 유지하세요
    val input = generateSequence(::readLine).toList()
    val account = if (input.size > 1) Account(input[0], input[1].toInt()) else Account(input[0])
    println(account.summary())
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Kotlin 플레이그라운드