为了账号安全,请及时绑定邮箱和手机立即绑定

kotlin 中的静态最终字段继承

kotlin 中的静态最终字段继承

元芳怎么了 2021-11-03 14:16:52
我在这里有一个非常简单的问题,但无法弄清楚。考虑一个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.AAwhereaA;的实例来访问该字段。你也不能在 Kotlin 中做到这一点。


查看完整回答
反对 回复 2021-11-03
  • 1 回答
  • 0 关注
  • 229 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信