將下列哪個(gè)代碼放入程序中標(biāo)注的【代碼】處將導(dǎo)致編譯錯(cuò)誤。答案是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貢獻(xiàn)174條經(jīng)驗(yàn) 獲得超85個(gè)贊
答案是b
A沒問題,是函數(shù)的重寫
C沒問題,是一個(gè)B類的特有函數(shù),也可以算是getNum()方法的重載
D,沒問題,同C
B編譯錯(cuò)誤,因?yàn)榭磪?shù)列表和父類的getNum方法形成了重寫,但是返回值類型不同,造成了調(diào)用的不確定性(就是虛擬機(jī)需要調(diào)用getNum時(shí),只看參數(shù)列表,所以,無法判斷該調(diào)用哪一個(gè)),所以編譯失敗

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