Java——方法的重寫(覆蓋)


2.2方法的重寫(覆蓋)(override,orverwrite)

2.2.1 什么時候方法要進行重寫?

如果父類中的方法已經無法滿足當前子類的業務需求,需要將父類中的方法進行重新寫一遍。就是要改變父類的行為。

注意:子類如果重寫父類中的方法之后,子類對象一定調用的是重寫之后的方法。

2.2.2 發生方法覆蓋的條件

①發生在具有繼承關系的兩個類之間

②必須具有相同的方法名,相同的返回值類型,相同的參數列表.

③重寫的方法不能比被重寫的方法擁有更低的訪問權限。

④重寫的方法不能比被重寫的方法拋出更寬泛的異常。(異常機制再講。)

⑤私有的方法不能被覆蓋。(多態之后講)

⑥構造方法無法被覆蓋。因為構造方法無法被繼承。

⑦靜態的方法不存在覆蓋。(多態之后講)

⑧覆蓋指的是成員方法,和成員變量無關。

繼承最基本的作用:代碼重用。 繼承最重要的作用:方法可以重寫。

2.2.3 方法的重載與重寫的區別

方法重載(Overload)的條件:

①方法名稱相同

②方法參數類型、個數、順序至少有一個不同

③方法的返回類型可以不同,因為方法重載和返回類型沒有任何關系

④方法的修飾符可以不同,因為方法重載和修飾符沒有任何關系

⑤方法重載只出現在同一個類中

方法覆蓋(Override)的條件:

①必須要有繼承關系

②覆蓋只能出現在子類中,如果沒有繼承關系,不存在覆蓋,只存在重載

③在子類中被覆蓋的方法,必須和父類中的方法完全一樣,也就是方法名,返回類型、參數列表,完全一樣

④子類方法的訪問權限不能小於父類方法的訪問權限

⑤子類方法不能拋出比父類方法更多的異常,但可以拋出父類方法異常的子異常

⑥父類的靜態方法不能被子類覆蓋

⑦父類的私有方法不能覆蓋

⑧覆蓋是針對成員方法,而非屬性

注意:兩個方法要同為static或同為非static

public class Test01{

       public static void main(String[] args){

              //創建子類對象

              Cat c = new Cat();

              //調用方法

              c.move();

              Animal a = new Animal();

              a.move();

       }

}

//父類:動物

class Animal{

       //成員方法

       public void move(){

              System.out.println("動物在移動!");

       }

}

//子類:貓

class Cat extends Animal{

       //Cat的move方法應該輸出:貓在走貓步!

       //Animal中的move方法已經無法滿足Cat了。

       //所以要在Cat類中對Animal類中的move方法進行重新定義(方法的覆蓋,方法的重寫,Overwrite,Override)

       public void move(){

              System.out.println("貓在走貓步!");

       }

}

 

 

 

 


免責聲明!

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



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