我最近开始关注 Kotlin,并且有 Java 方面的经验。在Java中,我们可以用与父级中相同的名称来声明该字段。当我在 Kotlin 中执行相同操作时,它会给出错误 name hides member of Super type User
。我在这里缺少什么?
Kotlin
open class User(protected var name: String)
class TwitterUser(var name: String) : User(name)
Java 的概念相同
public class A {
protected String name;
}
public class B extends A {
String name;
}
最佳答案
问题是,您隐藏了原始属性的实现。但无论如何,有一种可能性可以这样做:
open class User(protected open var name: String)
class TwitterUser(override var name: String) : User(name)
您只需考虑,这主要改变了属性的实现。您将无法单独访问 User.name
或 TwitterUser.name
。完全一样。
关于java - 在子类中声明与父类相同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48032892/