7.7方法重寫

7.7方法重寫
子類可以重寫從父類繼承的方法,從而允許子類添加或者改變父類中方法的行爲。
這稱爲方法重寫,是OOP的特徵之一。
當子類重寫父類的方法時,必須遵循如下的規則:
 子類的方法的返回值的類型、方法名和形式參數列表,必須和父類中的是相同的。如果子類中的方法與父類中的方法同名,但是子類的方法改變了形式參數列表,那麼這是方法重載,而不是方法重寫。不要混淆這兩個概念,二者的用法是完全不同的。
 訪問修飾符必須不小於父類中的訪問修飾符。例如,如果父類的方法是public,那麼子類的必須是public。如果父類的方法是protected,那麼子類必須是protected或public(public比protected訪問權更大)。
 子類中重寫的異常不能拋出比父類更多的異常,

方法的重寫:
子類中的方法與父類中的方法相同(方法名稱、參數列表、返回類型)
方法重載:
一個類中的方法與另一個方法相同,參數列表不同
重寫體現的是父類與子類方法之間的關係;
重載體現的是一個類的內部方法之間的關係。

     ==代表如果兩邊的數據類型是基本數據類型,那麼直接比較值是否相等。
     如果兩邊的數據類型是引用數據類型,那麼比較是引用是否相等。

Object類有一個用於判斷兩個對象是否相等的equals()方法。
我們編寫的每一個類應該覆蓋equals()方法,
以讓類的用戶判斷什麼時候類的實例是相等的。
7.71 equals()方法

equals()默認情況下,調用的是0bject.equals(),
這個方法比較是對象的引用是否一致,
但是在某些特殊的業務場景中,我們也可以重寫該方法
equals()方法比較兩個對象,測試二者是否相等。
比較運算符“==”用於檢測是否兩個引用指向同一對象,
這種比較方法是與equals()完全不同的。

我們還可以注意到類中還添加了一個hashCode()方法。
一個必須遵循的常用規則就是:如果兩個對象是相等的,
那麼它們必須產生相同的哈希碼。因此,如果一個類重寫了equals()方法,
通常也需要重寫hashCode()方法。
7.8super關鍵字
this()代表本類中其他的構造函數 。
this.屬性或者this.行爲():
this.
this.代表着由該類產生的對象自身
this代表一個對象的本身。
this關鍵字:
訪問本類的其他的屬性
訪問本類的其他方法
訪問繼承來自父類的財產(屬性、行爲)

Super.
super()剛代表父類的構造函數:
這個默認編譯器會自動給我們添加子類構造的第一行。
super關鍵字:本類代表是繼承於父類的部分財產

this.的作用範圍:可操作本類的所有屬性,
可以操作本類的所有方法,還可以操作來自於繼承父類的財產(屬性和行爲)
super.的作用範圍:只可以操作來自於繼承父類的財產(屬性和行爲)

所以this.作用範圍遠大於super.的作用範圍,所以咱們直接使用this.

super()代表父類的構造方法,這行代碼必須要放置在第一行,
如果程序不顯式寫出,編譯器也會默認添加上
每個對象都有一個對自身的引用,稱爲this引用。
當在一個類中,引用類本身的成員變量或方法時,可以顯式地使用this引用。
類似地,
一個類可以使用關鍵字super,來顯式地引用從父類繼承的成員變量或方法。
我們可以把super看作是子對象對父對象的引用。
當子類在重寫父類的方法時,如果需要調用父類中的該方法,就必須使用super關鍵字。
關鍵字super還有一個與方法重寫無關的用法。
構造方法與繼承
不像一個超類的成員,超類的構造方法不能被它的子類繼承.
你必須爲一個子類定義構造方法,或者使用缺省的構造方法

7.9final關鍵字
final類。一個類可以聲明爲最終類的。最終類不能被有子類。
final方法。一個方法可以聲明爲最終的。最終方法不能被重寫。
變量不能被修改。
(1)final類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章