更新時(shí)間:2020-07-29 15:06:06 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2750次
回顧一下方法重載:
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)繼承過(guò)來(lái)的方法無(wú)法滿足當(dāng)前子類的業(yè)務(wù)需求時(shí),子類有權(quán)利對(duì)這個(gè)方法進(jìn)行重新編寫,又叫“方法的覆蓋”。
方法覆蓋又叫做:方法重寫,英文單詞:Override。
4.方法覆蓋的條件是什么?
(1)兩個(gè)類必須有繼承關(guān)系;
(2)重寫之后的方法和之前的方法具有相同的返回值類型,相同的方法名,相同的形式參數(shù)列表;
(3)重寫方法的訪問(wèn)權(quán)限不能比之前方法的權(quán)限更低,可以更高;
(4)重寫方法的拋出異常數(shù)不能比之前方法的拋出異常數(shù)更多,可以更少。
5.方法覆蓋的注意事項(xiàng):
(1)方法覆蓋只是針對(duì)方法,和屬性無(wú)關(guān);
(2)父類的私有方法無(wú)法覆蓋;
(3)構(gòu)造方法不能被繼承,所以構(gòu)造方法也不能被覆蓋;
(4)方法覆蓋只是針對(duì)實(shí)例方法,靜態(tài)方法覆蓋沒(mé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();??//輸出:鳥(niǎo)兒在飛翔!!!
?
}}class?Animal?{
//?移動(dòng)方法,訪問(wèn)權(quán)限為protected,比public低
protected?void?run()?{?
System.out.println("動(dòng)物在移動(dòng)!!!");
}}class?Cat?extends?Animal?{
//改方法的訪問(wèn)權(quán)限不能比原繼承方法的訪問(wèn)權(quán)限低,可以更高
public?void?run()?{
System.out.println("貓?jiān)谧哓埐?!!");
//?這里不能拋出異常,因?yàn)閽伋霎惓?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("鳥(niǎo)兒在飛翔!!!");
}}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“編程基礎(chǔ)之Java中使用方法覆蓋的作用”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)