方法的重寫


1.什么是方法的重寫?

子類繼承父類之后,就擁有了符合權限的父類的屬性和方法,但是當父類的方法不符合子類的要求的時候,子類也可以重新的書寫自己想要的方法。

所以,方法的重寫,也叫方法的覆蓋,即子類繼承父類的方法后,由於父類的方法不滿足子類的需求,子類重新書寫該方法。

2.方法重寫的條件

前提條件:必須是子類,才能重寫父類中的具有繼承權限的方法。

從書寫一個方法的順序要求:

權限修飾符必須大於或者等於父類的權限修飾符;
方法名、返回值類型、參數一致;
拋出的異常必須比父類的要小。

在第4點有每一個不符合的錯誤。

3.方法重寫實例

父類:

package com.dh.oop;

public class Parent {

    public void print(){
        System.out.println("我是爸爸");
    }
}

子類:

package com.dh.oop;

public class Son extends Parent{
    
}
  • 當子類沒有重寫父類的方法的時候,new一個子類對象,調用該方法:
package com.dh.oop;

public class OverrideDemo {

    public static void main(String[] args) {

        Son son = new Son();
        son.print();
    }
}

結果:

因為此時子類沒有該方法,但是繼承了父類的方法,所以調用的是父類的方法。

現在子類中重寫該print方法:

package com.dh.oop;

public class Son extends Parent{

    @Override
    public void print() {
        System.out.println("我是兒子");
    }
}
  • 當子類重寫了父類的方法之后,new子類對象,調用該方法:

    (小tip:alt+ins可以直接選擇並生成想重寫的方法)

package com.dh.oop;

public class OverrideDemo {

    public static void main(String[] args) {

        Son son = new Son();
        son.print();
    }
}

結果:

因為此時在子類中重寫了父類的方法,所以子類對象調用的就是子類的方法了。

4.不滿足重寫方法的情況

  • 權限修飾符小於父類:

  • 返回值不一樣:

  • 方法名不一樣:

  • 參數不一樣:

  • 拋出的異常大於父類:

5.重寫與重載的區別

  • 重載:重載發生在同一個類中,方法名相同,參數類型不同(順序、個數、類型),通過參數的類型來區別調用的是哪一個方法。
  • 重寫:重寫發生在子類中,方法名、返回值、參數相同,權限修飾符要大於或等於父類方法中的權限修飾符,拋出的異常要小於父類方法中拋出的異常,通過調用的對象來區別調用的是父類的方法還是子類的方法。

本人水平有限,若有錯誤,請指出,感激不盡~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM