更新時間:2020-07-29 15:06:06 來源:動力節(jié)點 瀏覽2434次
回顧一下方法重載:
1.什么時候考慮使用方法重載overload?
答:當(dāng)在一個類中,如果功能相似的話,建議將名稱定義成一樣,只是參數(shù)列表(個數(shù),順序,類型)不同,這樣代碼美觀,且方便編程。
2.什么條件構(gòu)成方法重載overload?
答:(1)同一個類當(dāng)中;(2)方法名相同;(3)參數(shù)列表不同(個數(shù),順序,類型)
3.什么時候我們會考慮使用“方法覆蓋”呢?
子類繼承父類之后,當(dāng)繼承過來的方法無法滿足當(dāng)前子類的業(yè)務(wù)需求時,子類有權(quán)利對這個方法進(jìn)行重新編寫,又叫“方法的覆蓋”。
方法覆蓋又叫做:方法重寫,英文單詞:Override。
4.方法覆蓋的條件是什么?
(1)兩個類必須有繼承關(guān)系;
(2)重寫之后的方法和之前的方法具有相同的返回值類型,相同的方法名,相同的形式參數(shù)列表;
(3)重寫方法的訪問權(quán)限不能比之前方法的權(quán)限更低,可以更高;
(4)重寫方法的拋出異常數(shù)不能比之前方法的拋出異常數(shù)更多,可以更少。
5.方法覆蓋的注意事項:
(1)方法覆蓋只是針對方法,和屬性無關(guān);
(2)父類的私有方法無法覆蓋;
(3)構(gòu)造方法不能被繼承,所以構(gòu)造方法也不能被覆蓋;
(4)方法覆蓋只是針對實例方法,靜態(tài)方法覆蓋沒有意義。
(5)書寫方法覆蓋時,建議使用復(fù)制粘貼父類的方法到子類,手動寫可能會失誤。
測試代碼:
public?class?MyTest?{
public?static?void?main(String[]?args)?{
Cat?c1?=?new?Cat();
c1.run();??//輸出:貓在走貓步!!!
Bird?b1?=?new?Bird();?
b1.run();??//輸出:鳥兒在飛翔!!!
?
}}class?Animal?{
//?移動方法,訪問權(quán)限為protected,比public低
protected?void?run()?{?
System.out.println("動物在移動!!!");
}}class?Cat?extends?Animal?{
//改方法的訪問權(quán)限不能比原繼承方法的訪問權(quán)限低,可以更高
public?void?run()?{
System.out.println("貓在走貓步!!!");
//?這里不能拋出異常,因為拋出異常數(shù)=1?>?繼承方法的拋出異常數(shù)
/*try?{
????throw?new?Exception("拋出異常");
}?catch?(Exception?e)?{
????e.printStackTrace();
????System.out.println("捕獲異常");
}*/
}}class?Bird?extends?Animal?{
public?void?run()?{
System.out.println("鳥兒在飛翔!!!");
}}
以上就是動力節(jié)點java培訓(xùn)機(jī)構(gòu)的小編針對“編程基礎(chǔ)之Java中使用方法覆蓋的作用”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀