Kotlin/포스팅

코틀린 하위 클래스 초기화

짜집퍼박사(짜박) 2024. 1. 2. 00:24

코틀린에서 하위 클래스를 초기화하는 방법은 주로 상위 클래스의 생성자를 호출하는 것과 관련이 있습니다. 이를 통해 하위 클래스가 상위 클래스의 초기화를 수행하고 나서 자체적인 초기화를 진행할 수 있습니다. 아래에서는 코틀린에서 하위 클래스를 초기화하는 방법과 관련된 주요 내용을 설명하겠습니다.

 

1. 기본적인 초기화

하위 클래스에서 상위 클래스를 초기화하려면 : 뒤에 상위 클래스의 생성자를 호출하는 구문을 사용합니다. 이때 상위 클래스의 생성자 호출은 super 키워드를 사용합니다.

open class Animal(val name: String)

class Dog(name: String, val breed: String) : Animal(name)

위의 예제에서 Dog 클래스는 Animal 클래스를 상속하고 있으며, Dog 클래스의 생성자에서 super(name)을 통해 Animal 클래스의 생성자를 호출하고 있습니다.

 

2. 생성자에서의 다양한 초기화 방법

코틀린에서는 여러 가지 초기화 방법을 제공합니다. 예를 들어, 기본 값 또는 null을 허용하는 매개변수를 가진 생성자를 사용하면 더 유연하게 초기화할 수 있습니다.

open class Animal(val name: String, val age: Int = 1)

class Dog(name: String, val breed: String, age: Int = 2) : Animal(name, age)

위의 예제에서 Animal 클래스는 age라는 매개변수를 가지는데, Dog 클래스에서는 이 매개변수를 생략하면 기본값인 1이 자동으로 사용됩니다.

 

3. 초기화 블록 활용

초기화 블록을 사용하면 클래스의 인스턴스가 생성될 때 실행되는 코드를 추가할 수 있습니다. init 키워드를 사용하여 초기화 블록을 작성할 수 있습니다.

open class Animal(val name: String) {
    init {
        println("Animal initialized")
    }
}

class Dog(name: String, val breed: String) : Animal(name)

 

4. 매개변수 없는 생성자와 초기화 블록

하위 클래스에서 상위 클래스의 매개변수 없는 생성자를 호출하거나 초기화 블록을 사용하려면 : 뒤에 super()를 사용하여 상위 클래스의 생성자를 호출하면 됩니다.

open class Animal {
    constructor() {
        println("Animal created")
    }
}

class Dog : Animal {
    constructor() : super() {
        println("Dog created")
    }
}

 

5. 상위 클래스에서의 초기화 순서

하위 클래스에서 상위 클래스의 초기화는 항상 먼저 발생합니다. 그래서 하위 클래스의 초기화 코드에서 상위 클래스의 멤버에 접근할 때 이미 초기화된 상태여야 합니다.

open class Animal(val name: String) {
    init {
        println("Animal initialized, name: $name")
    }
}

class Dog(name: String, val breed: String) : Animal(name) {
    init {
        println("Dog initialized, breed: $breed")
    }
}

위의 예제에서 Dog 클래스의 초기화 블록에서 breed에 접근하는 시점에 Animal 클래스의 초기화는 이미 완료되어 name에 접근할 수 있습니다.

코틀린에서 하위 클래스의 초기화는 유연하게 다양한 방법으로 수행할 수 있으며, 초기화 순서나 초기화 블록 등을 통해 필요한 로직을 적절히 처리할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 상속 캐스팅  (0) 2024.01.02
코틀린 타입 검사  (0) 2024.01.02
코틀린 하위 클래스 선언  (0) 2024.01.02
코틀린 상속  (0) 2024.01.02
코틀린 파일 시스템 유틸리티  (0) 2024.01.02