【问题标题】:Kotlin data class cannot init attribute of Parent classKotlin 数据类不能初始化父类的属性
【发布时间】:2020-02-12 19:21:08
【问题描述】:

像这样:

open class Father(
        val name:String = ""
)

data class Son(
        val age:Int = 1
):Father()

fun main(args: Array<String>) {
    val son = Son(
            name = "",
            age = 10
    )
}

我无法初始化 Son 的“name”属性,因为它来自父类父亲。 我该如何解决这个问题?

【问题讨论】:

    标签: kotlin constructor extends


    【解决方案1】:

    应该是

    open class Father(open val name: String="")
    
    data class Son(val age: Int = 1,
    override val name: String    ) : Father(name)
    
    fun main(args: Array<String>) {
    val son = Son(name = "",age = 10)
    }
    

    【讨论】:

    • 但是像'Son'这样的类太多了,这样会产生很多重复的代码......
    • 为什么需要在Son 中覆盖name?它应该在没有override val 的情况下工作(更简单),只需将参数传递给超类构造函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2021-09-27
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多