B類中的show()方法是“重寫”,“實現”還是僅是“定義”?interface A{ void show();}class B implements A{ public void show() { System.out.println("What is the proper term to explain?"); }}
3 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
一般來說,我說“覆蓋”是指重新定義繼承的行為,而我說“實現”是指定義一個行為(尚未實現)。
所以我會說那個 B
工具show()
。
而JLS似乎用這種方式去:
如果非抽象方法
mC
覆蓋類中的抽象方法,則稱該方法是mA
從實現的。C
mC
mA
C
在甲骨文例如文檔好像說override
是重新定義的行為太:
子類重寫方法的能力使類可以從行為“足夠接近”的超類繼承,然后根據需要修改行為。覆蓋方法與其覆蓋的方法具有相同的名稱,數量和參數類型,并且返回類型相同。重寫方法還可以返回重寫方法返回的類型的子類型。此子類型稱為協變返回類型。
請注意,java.lang.Override
注解并沒有相反的意思(強調是我的):
指示方法聲明旨在覆蓋超類型中的方法聲明。如果使用此注釋類型對方法進行注釋,則除非至少滿足以下條件之一,否則要求編譯器生成錯誤消息:
該方法的確覆蓋或實現了在超類型中聲明的方法。
該方法的簽名與Object中聲明的任何公共方法的簽名等效。
該API可以@Implement
另外為@Override
注釋提供。
但是兩者都顯得很笨拙。因此,他們可能只保留一個:@Override
傳達兩件事。
添加回答
舉報
0/150
提交
取消