Kotlin:为什么“未解析的引用”是密封类的子类的构造函数参数

埃米尔·阿切德(Emile Achadde)
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正常工作

疯子

因为namePerson类中没有定义属性name您拥有的所有子类都在子类中,因此nameOf父类中的函数无法访问它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当基类具有带参数的构造函数时,为什么不能创建无参数子类构造函数?

来自分类Dev

为什么必须在Java中子类的参数化构造函数中调用父类的参数化构造函数?

来自分类Dev

为什么不能声明作为密封类的子类的嵌套类?

来自分类Dev

如何在Kotlin中引用密封的构造函数?

来自分类Dev

Kotlin:密封类不能“包含”数据类吗?为什么?

来自分类Dev

为什么复制构造函数的参数是引用而不是指针?

来自分类Dev

为什么复制构造函数的参数是引用而不是指针?

来自分类Dev

为什么Javascript类引用相同的构造函数?

来自分类Dev

为什么未密封类的未密封虚拟方法调用的顺序很重要?

来自分类Dev

为什么默认构造函数和参数化构造函数都在一个类中?

来自分类Dev

为什么Java不允许不能访问其超类的任何构造函数的子类?

来自分类Dev

为什么允许使用子类的构造函数实例化父类对象?

来自分类Dev

类模板构造函数中引用的未解析外部符号(在VS 2008中)

来自分类Dev

在构造函数中,为什么在执行超类构造函数之前不能引用当前类的字段?

来自分类Dev

为什么子类重写虚拟函数不能更改父类的默认函数参数?

来自分类Dev

如果不在子类中创建子类对象,为什么父类必须具有默认构造函数?

来自分类Dev

每当当前类是子类时,为什么要在方法或属性上使用密封

来自分类Dev

为什么在某些父类上未选择子类类型的参数重载

来自分类Dev

Kotlin:函数式编程,密封类列表

来自分类Dev

为什么未调用move构造函数?

来自分类Dev

为什么未调用move构造函数?

来自分类Dev

当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?

来自分类Dev

为什么我可以使用int构造函数将int绑定到类的引用?

来自分类Dev

构造函数为什么不设置参数?

来自分类Dev

为什么子类运行Superclass构造函数?

来自分类Dev

为什么从未调用ArrayIterator子类的构造函数?

来自分类Dev

为什么我的子类构造函数没有被调用?

来自分类Dev

为什么Abstract类不能密封或静态?

来自分类Dev

为什么要密封静态类?

Related 相关文章

  1. 1

    当基类具有带参数的构造函数时,为什么不能创建无参数子类构造函数?

  2. 2

    为什么必须在Java中子类的参数化构造函数中调用父类的参数化构造函数?

  3. 3

    为什么不能声明作为密封类的子类的嵌套类?

  4. 4

    如何在Kotlin中引用密封的构造函数?

  5. 5

    Kotlin:密封类不能“包含”数据类吗?为什么?

  6. 6

    为什么复制构造函数的参数是引用而不是指针?

  7. 7

    为什么复制构造函数的参数是引用而不是指针?

  8. 8

    为什么Javascript类引用相同的构造函数?

  9. 9

    为什么未密封类的未密封虚拟方法调用的顺序很重要?

  10. 10

    为什么默认构造函数和参数化构造函数都在一个类中?

  11. 11

    为什么Java不允许不能访问其超类的任何构造函数的子类?

  12. 12

    为什么允许使用子类的构造函数实例化父类对象?

  13. 13

    类模板构造函数中引用的未解析外部符号(在VS 2008中)

  14. 14

    在构造函数中,为什么在执行超类构造函数之前不能引用当前类的字段?

  15. 15

    为什么子类重写虚拟函数不能更改父类的默认函数参数?

  16. 16

    如果不在子类中创建子类对象,为什么父类必须具有默认构造函数?

  17. 17

    每当当前类是子类时,为什么要在方法或属性上使用密封

  18. 18

    为什么在某些父类上未选择子类类型的参数重载

  19. 19

    Kotlin:函数式编程,密封类列表

  20. 20

    为什么未调用move构造函数?

  21. 21

    为什么未调用move构造函数?

  22. 22

    当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?

  23. 23

    为什么我可以使用int构造函数将int绑定到类的引用?

  24. 24

    构造函数为什么不设置参数?

  25. 25

    为什么子类运行Superclass构造函数?

  26. 26

    为什么从未调用ArrayIterator子类的构造函数?

  27. 27

    为什么我的子类构造函数没有被调用?

  28. 28

    为什么Abstract类不能密封或静态?

  29. 29

    为什么要密封静态类?

热门标签

归档