data class 상속

data class는 final

data class 는 기본으로 final 이므로 상속이 안 된다.

대신 Java 에서는 안 되지만 kotlin 에서는 interface 를 이용하여 대략 다음과 같이 필드를 상속하는 게 가능하다.

단, 상속받을 필드에 override 키워드가 필요하다.

interface Person {
    val name: String
    val age: Int
    val email: String
}

data class Adult(
    override val name: String,
    override val age: Int,
    override val email: String,
    val isMarried: Boolean = false,
    val hasKids: Boolean = false
) : Person {

data class Child(
    override val name: String,
    override val age: Int,
    override val email: String = ""
) : Person

references: Kotlin data classes — enough boilerplate

Written on November 2, 2019