PHpullh
학습 라이브러리/Kotlin/class & 주 생성자 & init

KOTLIN · 객체지향

class & 주 생성자 & init

Kotlin 클래스의 주 생성자(primary constructor)와 초기화 블록.

객체지향입문class주생성자initgettersetter

핵심 설명

Kotlin 클래스의 주 생성자(primary constructor)와 초기화 블록.

Kotlin code

// 주 생성자 — 클래스 헤더에 직접
class Person(
    val name: String,           // val/var → 프로퍼티 자동 생성
    var age: Int,
    private val email: String   // private 프로퍼티
) {
    // init 블록 — 생성 시 실행
    init {
        require(age >= 0) { "나이는 0 이상이어야 합니다" }
        println("$name 생성됨")
    }

    // 보조 생성자
    constructor(name: String) : this(name, 0, "")

    // 프로퍼티 커스텀 getter
    val isAdult: Boolean
        get() = age >= 18

    // 프로퍼티 커스텀 setter
    var nickname: String = name
        set(value) {
            field = value.trim()  // field = backing field
        }

    override fun toString() = "Person($name, $age)"
}

fun main() {
    val p = Person("Alice", 25, "alice@test.com")
    println(p.isAdult)   // true
    p.nickname = "  Dev  "
    println(p.nickname)  // "Dev"
}

학습 팁

init 블록은 주 생성자 실행 직후 호출됩니다. 여러 init 블록을 작성하면 선언 순서대로 실행됩니다.

주의할 점

Setter 내에서 프로퍼티에 직접 대입하면(nickname = value) 무한 재귀가 됩니다. 반드시 field 키워드를 사용하세요.

자주 묻는 질문

class & 주 생성자 & init란 무엇인가요?

Kotlin 클래스의 주 생성자(primary constructor)와 초기화 블록.

class & 주 생성자 & init 학습 시 주의할 점은 무엇인가요?

Setter 내에서 프로퍼티에 직접 대입하면( nickname = value ) 무한 재귀가 됩니다. 반드시 field 키워드를 사용하세요.