將下列哪個代碼放入程序中標注的【代碼】處將導致編譯錯誤。答案是B(PS:誰能告訴我這是怎么回事)A.public float getNum(){return 4.0f;}B.public void getNum(){}C.public void getNum(double d){}D.public?float getNum(float d){return 4.0d;}class?A{
public?float?getNum(){
return?3.0f;}}
public?class?B?extends?A{
????????【代碼】}
3 回答
已采納

天啟之魂
TA貢獻174條經驗 獲得超85個贊
答案是b
A沒問題,是函數的重寫
C沒問題,是一個B類的特有函數,也可以算是getNum()方法的重載
D,沒問題,同C
B編譯錯誤,因為看參數列表和父類的getNum方法形成了重寫,但是返回值類型不同,造成了調用的不確定性(就是虛擬機需要調用getNum時,只看參數列表,所以,無法判斷該調用哪一個),所以編譯失敗

前進的騷年
TA貢獻3條經驗 獲得超1個贊
答案是B,D。
B既不是重寫也不是重載,重寫需要一樣的返回值類型和參數列表,訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public>protected>default>private);
重載:必須具有不同的參數列表;
可以有不同的返回類型,只要參數列表不同就可以了;
可以有不同的訪問修飾符;
把其看做是重載,那么在java中是不能以返回值來區分重載方法的,所以b不對.
D定義返回類型為float,但實際返回的是double類型
添加回答
舉報
0/150
提交
取消