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