1.概述
方法的重寫(override)是封裝的特性之一。在子類中可以根據(jù)需要對基類中繼承來的方法進行重寫。重載和重寫沒有任何關(guān)系。
作用:通過重寫,子類既可以繼承父類的東西,又可以靈活的擴充。
1.@override注解是告訴編譯器,下面的方法是重寫父類的方法
2.編譯器可以給你驗證@Override下面的方法名是否是你父類中所有的,如果沒有則報錯。例如,你如果沒寫@Override,而你下面的方法名又寫錯了,這時你的編譯器是可以編譯通過的,因為編譯器以為這個方法是你的子類中自己增加的方法。
3.如果不寫@override注解去直接重寫方法,編譯器是不會判斷你是不是正確重寫了父類中的方法的。如重寫方法時參數(shù)與父類不同,程序是不會提示報錯的。這會留下一個潛在的bug。當你寫了@override注解時,程序會判斷你是否正確的重寫了父類的對應(yīng)方法。而且加上此注解后,程序會自動屏蔽父類的方法。
2.特點
在子類中可以根據(jù)需要對基類中繼承來的方法進行重寫。
重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回值類型。
重寫方法不能使用比被重寫方法更嚴格的訪問權(quán)限。(由于多態(tài))
3.實例說明
代碼如下:
public class Animal {
String name;
void eat() {
System.out.println("have a good dinner");
}
public static void main(String[] args) {
Birds b = new Birds();
b.eat();
}
}
class Birds extends Animal {
@Override
void eat() {
super.eat(); // 調(diào)用父類的方法
System.out.println("----------------------------------------"); // 分隔線
System.out.println("jiujiujiu");
}
void fly() {
System.out.println("Yeah,I can fly~~");
}
}
代碼說明:
鳥類Birds在eat的時候,需要輸出jiujiujiu。可通過重寫父類Animal中的eat()方法實現(xiàn)。
通過Bird實例調(diào)用eat()方法時,是調(diào)用重寫后的方法。
之前的父類的方法呢?其實還存在,可以在子類中通過super進行調(diào)用。文章來源:http://www.zghlxwxcb.cn/news/detail-773697.html
運行結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-773697.html
have a good dinner
----------------------------------------
jiujiujiu
到了這里,關(guān)于java重寫(@Override)介紹及實例說明的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!