我在这里有一个非常简单的问题,但无法弄清楚。考虑一个java类:class A { public static final int AA=5;}将(内部)转换为 kotlin 如下:open class A { companion object { val AA:Int=5 }}至少我是这么认为的。现在,如果您在 Java 中继承:class B extends A { int AAA;}您可以像这样通过 B 访问字段 AA(从 A): B.AA 。但是,在 Kotlin 中这是不可能的。访问它的唯一方法是通过 A.AA。这是内置功能还是我做错了什么?
1 回答
慕娘9325324
TA贡献1783条经验 获得超4个赞
在 Java 中,当编译器看到 时B.AA
,它会自动将其转换为A.AA
. 那里没有真正的继承或覆盖。
Kotlin 的开发人员决定不模拟此功能,因为它不符合将静态方法视为属于 的想法object
: 的伴生对象B
不扩展 的伴生对象A
,并且不能因为您无法扩展object
.
请注意,类似地,在 Java 中,您可以通过a.AA
wherea
是A
;的实例来访问该字段。你也不能在 Kotlin 中做到这一点。
添加回答
举报
0/150
提交
取消