Java中繼承的基礎介紹

1-1.繼承的概述

繼承是多態的前提,若是沒有繼承,就沒有多態。ide

繼承主要解決的問題:共性抽取。this

特色:對象

1).子類能夠擁有父類的內容。繼承

2).子類還能夠擁有本身的內容。編譯

1-2.繼承的格式

定義父類的格式:和一個普通類的定義格式同樣。class

定義子類的格式:變量

      public class 子類名 extends 父類名 { }擴展

1-3.繼承中成員變量與成員方法的訪問特色

在父子類繼承關係中,若是成員變量重名,則建立子類對象時,訪問方式有兩種:
1).直接經過子類對象訪問成員變量。在定義對象時,等號左邊是誰,訪問變量時就優先用誰的變量,若是沒有,便向上找,若所有沒有則編譯報錯。權限

2).間接經過成員方法訪問成員變量。其中,成員方法屬於誰,就用誰,沒有就往上找。方法

在父子類繼承關係中,建立子類對象,訪問成員方法的規則:建立對象是誰,就優先用誰,若是沒有,就往上找。

注意:不管是成員變量仍是成員方法,若在本類中沒有都是往上找,毫不會向下找。

1-4.區分子類中重名的三種變量

局部變量       本類變量     父類變量

直接寫成員變量    this.變量名    super.父類成員變量名

在父子類繼承關係中,建立子類對象,訪問成員方法的規則:建立對象是誰,就優先用誰,若是沒有,就往上找。

注意:不管是成員變量仍是成員方法,若在本類中沒有都是往上找,毫不會向下找。

1-5.繼承中方法的覆蓋重寫

重寫,指在繼承關係中,方法的名稱同樣,參數列表也同樣。

注意區分重寫與重載:

重寫:方法名同樣,參數列表也同樣。

重載:方法名同樣,可是參數列表不同。

方法重寫的特色:建立的是子類對象,則優先用子類方法。

注意事項:

1).必須保證父子類之間的方法名稱和參數列表相同,能夠經過在前面加註解@Override驗證是否正確重寫了,但不寫註解也是正確的。

2).子類方法的返回值必須小於等於父類方法返回值的範圍。

(擴展:Java.lang.Object類是全部類的公共最高父類)

3).子類方法的權限必須大於等於父類方法的權限修飾符

(擴展:權限修飾詞:public>protected>(default)>private。備註:default不是關鍵字,而是什麼都不寫,留空)

覆蓋重寫的使用原則:對已使用的類,儘可能不要重寫去定義一個新類,而應該對原來的類進行更新修改。

1-6.繼承中的構造方法的訪問

特色:

1).子類構造方法當中有一個默認隱含的「super()」調用,因此必定是先調用父類構造,後執行子類構造。

2).能夠經過super關鍵字在子類構造重載調用父類構造。

3).super的構造調用必須是子類構造方法的第一個語句。即,不能一個子類構造調用屢次super構造。

2-1.super關鍵字的三種用法

1).在子類的成員方法中,訪問父類的成員變量。

2).在子類的成員方法中,訪問父類的成員方法。

3).在子類的構造方法中,訪問父類的構造方法。

2-2.this關鍵字的三種用法

super關鍵字用於訪問父類內容,this關鍵字用於訪問本類的內容。

this用法:

1).在本類成員方法中,訪問本類的成員變量。

2).在本類成員方法中,訪問本類的成員方法。

3).在本類構造方法中,訪問本類的另外一個構造方法。注意,this在調用的也必須是構造方法中的第一個語句,也是惟一一個。

注意:this和super這兩種構造調用,不能同時使用。

2-3.Java繼承的三個特色

1).Java語言是單繼承的,一個類的直接父類只能有惟一一個。

2).Java語言能夠多級繼承。

3).Java中最高父類是Java.lang.Object

一個子類的直接父類是惟一的,但一個父類能夠有不少個子類,子類之間爲兄弟類關係。

2-4.抽象的概念和格式

若是父類中的方法不肯定如何進行方法體的實現,那麼這就是一個抽象方法。

抽象方法:加上abstract關鍵字,而後去掉大括號直接分號結束。

抽象類:抽象方法所在的類必須是抽象類才行,在class以前加上abstract便可。

2-5.抽象方法和抽象類的使用

1).對抽象類,不能直接建立抽象類對象。

2).必須使用一個子類繼承抽象父類。

3).子類必須覆蓋重寫抽象父類當中全部的抽象方法。

覆蓋重寫(實現):子類去掉抽象方法的abstract關鍵字,而後補上方法體大括號。

4).建立子類對象進行使用。

2-6.抽象方法和抽象類的注意事項

注意事項:

1).抽象類不能直接建立抽象類對象。

2).抽象類中,能夠有構造方法,是供子類建立對象時,初始化父類成員使用。

3).抽象類中,不必定包含抽象方法,但又抽象方法的必定時抽象類。

4).抽象類的子類,必須是重寫抽象父類中全部的抽象方法,不然,編譯沒法經過而報錯,除非該子類也是抽象類。

相關文章
相關標籤/搜索