我在這里有一個非常簡單的問題,但無法弄清楚??紤]一個java類:class A { public static final int AA=5;}將(內(nèi)部)轉(zhuǎn)換為 kotlin 如下:open class A { companion object { val AA:Int=5 }}至少我是這么認為的?,F(xiàn)在,如果您在 Java 中繼承:class B extends A { int AAA;}您可以像這樣通過 B 訪問字段 AA(從 A): B.AA 。但是,在 Kotlin 中這是不可能的。訪問它的唯一方法是通過 A.AA。這是內(nèi)置功能還是我做錯了什么?
1 回答

慕娘9325324
TA貢獻1783條經(jīng)驗 獲得超4個贊
在 Java 中,當編譯器看到 時B.AA
,它會自動將其轉(zhuǎn)換為A.AA
. 那里沒有真正的繼承或覆蓋。
Kotlin 的開發(fā)人員決定不模擬此功能,因為它不符合將靜態(tài)方法視為屬于 的想法object
: 的伴生對象B
不擴展 的伴生對象A
,并且不能因為您無法擴展object
.
請注意,類似地,在 Java 中,您可以通過a.AA
wherea
是A
;的實例來訪問該字段。你也不能在 Kotlin 中做到這一點。
添加回答
舉報
0/150
提交
取消