簡體   English   中英

Kotlin:為什么對密封類的子類的構造函數參數進行了*未解析的引用*

[英]Kotlin : Why *unresolved reference* for a constructor parameter of a subclass of a sealed class

sealed class Person () {
    data class Man (val name: String): Person()
    data class Woman (val name: String): Person() 

    fun stringOf(): String {
    return when (this) {
        is Person.Man -> "Mr "+this.name
        is Person.Woman -> "Mrs "+this.name
    }
    } // works fine

    fun nameOf() : String {
        return this.name // error: unresolved reference: name
    }
}

fun main(args: Array<String>) {
    val man = Person.Man("John Smith")
    println (man.stringOf()) 
}

為什么上面的代碼給出錯誤:未解析的引用:函數nameOf 的名稱並且對於看起來非常相似的函數stringOf正常工作。

因為Person類中沒有定義name屬性。 您擁有的所有name都在子類中,因此父類中的nameOf函數無法訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM