【发布时间】:2017-12-30 10:08:05
【问题描述】:
我最近关注了 Kotlin,并且有 Java 方面的经验。在 Java 中,我们可以声明与父字段同名的字段。当我在Kotlin 中做同样的事情时,它会给出错误name hides member of Super type User。我在这里错过了什么?
科特林
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;
}
【问题讨论】:
-
技术上这样做是 Java also 隐藏了超类型的成员,Java 的编译器在发生这种情况时不会出错......但它可能会抛出警告在你。
-
Unlike Java,Kotlin 需要对可覆盖成员和覆盖进行显式注释。