[kotlin] 추상 클래스의 생성자와 초기화

코틀린에서 추상 클래스는 일부 메서드의 내용이 구현되지 않은 클래스이며, 추상 클래스는 직접 인스턴스화될 수 없습니다. 이러한 클래스는 하위 클래스에서 메서드의 구현을 강제하거나 공통으로 사용할 수 있는 기본 동작을 제공하기 위해 사용됩니다.

추상 클래스의 생성자초기화와 관련된 내용을 살펴보겠습니다.

추상 클래스 생성자

일반 클래스와 마찬가지로, 추상 클래스는 생성자를 가질 수 있습니다. 추상 클래스의 생성자는 인스턴스화되지 않는 클래스에서 인스턴스화될 때 해당 클래스의 프로퍼티 및 초기화 블록을 초기화하는 데 사용됩니다.

abstract class Animal(val name: String) {
    // 추상 메서드
    abstract fun makeSound()
}

class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("멍멍")
    }
}

fun main() {
    val dog = Dog("멍멍이")
    println("강아지의 이름: ${dog.name}")
    dog.makeSound()
}

위의 코드 예제에서, Animal 추상 클래스는 name 프로퍼티를 갖는 생성자를 가지고 있습니다. Dog 클래스는 Animal을 상속받고, makeSound 메서드를 구현합니다.

초기화 블록

추상 클래스는 초기화 블록을 사용하여 초기화 로직을 추가할 수 있습니다. init 블록은 생성자 호출 시 실행되는 블록으로, 주로 프로퍼티 초기화나 다른 초기화 작업을 수행하는 데 사용됩니다.

abstract class Shape {
    init {
        println("도형을 초기화합니다.")
    }
}

class Rectangle : Shape() {
    init {
        println("사각형을 초기화합니다.")
    }
}

fun main() {
    val rectangle = Rectangle()
}

위의 예제에서, Shape 추상 클래스는 초기화 블록을 가지고 있으며, Rectangle 클래스는 Shape 추상 클래스를 상속받고, 자체 초기화 블록을 추가합니다.

이것은 코틀린에서 추상 클래스의 생성자와 초기화에 관한 간략한 소개입니다. 추상 클래스는 다양한 메서드와 초기화 패턴을 사용하여 유연하고 강력한 클래스를 정의하는 데 사용될 수 있습니다.

참고: Kotlin Docs. “Classes and Inheritance.” https://kotlinlang.org/docs/classes.html