重寫(Override)是在子類重寫父類的方法,以滿足子類的特殊要求。
我們有這樣的需求:Bird是所有鳥的父類,父類有一個fly方法,表示飛翔,但是不是所有的鳥都有飛翔的能力,就像鴕鳥就不可以飛翔,這樣,我們就需要對fly方法進行重寫,
class Bird{
public void fly(){
System.out.println("自由自在的飛翔...");
}
}
class Ostrich extends Bird{
public void fly(){
System.out.println("我不會飛,但是會跑");
}
}
class LittleBird extends Bird{}
public class Test05 {
public static void main(String[] args) {
Ostrich ostrich = new Ostrich();
ostrich.fly();//我不會飛,但是會跑
LittleBird lb = new LittleBird();
lb.fly();//自由自在的飛翔...
}
}
實現重載要符合以下的要求:
“兩同兩小一大”:方法名相同、參數相同、子類的返回值類型要比父類的更小(具體)、子類拋出的異常要比父類的更小(具體)、子類的訪問權限要比父類的大(寬泛);
實現重寫後,父類的方法子類的實例無法再調用;
實現重寫後,子類的方法可以藉助super關鍵字(下一更新會接觸到)調用父類的方法;
父類的private方法不可以重寫,因爲不能訪問到。
重寫(Override)與重載(Overload)的區別:
兩者本來就沒有聯繫,在面試的時候遇到這個問題的話,分別敘述兩者的特點即可。