[單項選擇題] 有如下程序段: public class Parent {public int addValue (int a,int b) { int s
[單項選擇題] 有如下程序段: public class Parent {public int addValue (int a,int b) { int s; s=a+b; return 3; } } class Child extends Parent {} 則下列選項中,可以正確加入類Child中且父類的方法不會被覆蓋的是( )。
A.int addValue (int a,int {//do somethin..}
B.public void addValue() {//do somethin..}
C.public int addValue (int a,int throws MyException {//do somethin..}
D.public float addValue (int a,int b,float b=1.0) {//do sometin..}
正確答案:B
參考解析:此題涉及方法重載(overload)、方法重寫(override)以及類派生時方法重寫的規(guī)則方法重載的規(guī)則是: (1)參數(shù)列表必須不同,參數(shù)個數(shù)不同完全可以,如果個數(shù)相同,則參數(shù)類型的不同不會引起歧義,例如int和long、float和double就不能作為唯一的類型不同; (2)返回值可以不同,但是不能是重載時唯一的不同點 (這點和C++中不同,C++中返回類型必須一致)。 方法重寫發(fā)生在類繼承時,子類可以重寫父類中已有的方法,必須在返回類型和參數(shù)列表一樣時才能說是重寫,否則就是重載,Java中方法重寫的一個重要而且容易被忽略的規(guī)則是重寫的方法的訪問權(quán)限不能比被重寫的方法的訪問權(quán)限低! 重寫的另一個規(guī)則是重寫的方法不能比被重寫的方法拋出(throws)更多種類的異常,其拋出的異常只能少,或者是其子類,不能以拋出異常的個數(shù)來判斷種類,而應(yīng)該是異常類層次結(jié)果上的種類。 此題中選項A的錯誤就是重寫的訪問權(quán)限比被重寫的方法的低,而B屬于重載,選項C的錯誤在于比被重寫的方法拋棄了更多種類的異常。選項D中,當(dāng)只傳遞兩個變量的值的時候,系統(tǒng)就不知道到底調(diào)用哪個方法了,因為b為常量,可以不指定。所以只有選項B是符合題意的。
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。