Java進階之路--繼承中的方法重寫與屬性覆蓋


1、Java繼承中屬性覆蓋

             請參考此博客:Java子類父類屬性的覆蓋

重點:(屬性的覆蓋是針對子類與父類有相同的屬性名而言的)

<1>final常量可以被覆蓋

<2>靜態變量和靜態常量屬於類,不屬於對象,因此它們不能被覆蓋。

<3>friendly(默認情況,不寫)、protected和public修飾符並不影響屬性的覆蓋。

<4>由於private變量不可以被子類繼承,受訪問權限的限制,它不能被覆蓋。

  <5>屬性的值取父類還是子類並不取決於我們創建對象的類型,而是取決於我們定義的變量的類型。

ParentClass subClass=new SubClass(); //屬性為父類的屬性

 

2、Java方法重寫

             請參考此博客:方法能重寫,屬性能重寫嗎?

重點:(屬性的覆蓋是針對子類與父類有相同的方法名而言的)

<1>重載與重寫的區別:

       重載(也叫過載)時只與方法特征有關,那么什么是方式特征呢?一個方法的特征(也可叫方法簽名)僅包括方法的名字、參數的個數、類型、順序(實質上就是參數列表),而不包括方法的返回類型、訪問修飾權限與所拋出的異常。

       重寫(覆寫)是會進一步檢查兩個方法的返回類型是否相同、訪問修飾權限是否縮小(假設public->protected方向是縮小,反之叫擴大)和拋出的異常范圍是否擴大。重寫時不可以縮小修飾符權限,不可以擴大異常范圍。

       重載一般是指在同一個類中多個方法間,但也可重父類的的方法,而重寫只發生面父子與子類的方法間。

<2>私有方法(不可以重寫)

        因為子類不可以繼承父類的私有方法,所以即使試着在子類覆寫了父類的私有方法,不管訪問權限修飾符是什么,在編譯時也不會報錯。


免責聲明!

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



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