[英]Static final field inheritance in kotlin
我在這里有一個非常簡單的問題,但無法弄清楚。 考慮一個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。 這是內置功能還是我做錯了什么?
在 Java 中,當編譯器看到B.AA
,它會自動將其轉換為A.AA
。 那里沒有真正的繼承或覆蓋。
Kotlin 的開發人員決定不模擬此功能,因為它不符合將靜態方法視為屬於object
想法: B
的伴生對象不擴展A
的伴生對象,並且不能,因為您不能擴展一個object
。
請注意,類似地,在 Java 中,您可以通過a.AA
訪問該字段,其中a
是A
的實例; 你也不能在 Kotlin 中做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.