1、概述
繼承描述的是事物之間的所屬關係,通過繼承可以使多種事物之間形成的一種關係體系。
2、格式&使用
格式:class 子類 extends 父類{}
使用情況:多個類有共同的成員變數和成員方法,抽取到另外乙個類中(父類),再讓多個類繼承這個父類,我們的多個類就可以獲取到父類中的成員了。
3、特點
(1)類只支援單繼承,不允許多繼承(乙個類只能有乙個直接父類)
(2)多個類可以繼承乙個父類
(3)多層繼承是可以的,即乙個類的父類可以再去繼承另外的父類,例如:c繼承b,b繼承a
(4)子類和父類是相對概念,乙個類某個類的同時,也可以是另乙個類的父類
4、繼承中成員變數的特點
(1)子類只能獲取父類非私有成員
子父類中成員變數的名字不一樣直接獲取父類的成員變數
子父類中成員變數名字是一樣的獲取的是子類的成員變數
(2)就近原則
如果有區域性變數就使用區域性變數
如果沒有區域性變數,有子類的成員變數就使用子類的成員變數
如果沒有區域性變數和子類的成員變數,有父類的成員變數就使用父類的成員變數
(3)super
super可以獲取父類的成員變數和成員方法,用法和this是相似的
5、成員方法特點&方法重寫
(1)子類中沒有這個方法,呼叫父類的
(2)子類中重寫了這個方法,呼叫子類的
方法重寫:在子父類中,子類的方法和父類的完全一樣,子類重寫了父類的方法(覆蓋),當子類重寫父類方法後,使用子類物件呼叫的就是子類的方法
6、重寫的應用場景&注意事項
(1)應用場景
當父類的方法不能完全滿足子類使用的時候,既可以保留父類的功能(沿襲、傳承),還可以有自己特有功能
(2)注意事項
不可以重寫父類私有成員方法,壓根就看不到父類私有成員
子類重寫父類方法,許可權必須大於等於父類方法的許可權
註解@override:方法重寫,說明下面的方法是重寫父類的方法
7、繼承中構造方法執行順序
(1)super(實參列表); 在子類的構造方法中使用,用來呼叫父類中的構造方法(具體哪乙個由傳遞的引數決定),並且只能在構造方法第一行使用
(2)this(實參列表); 在類的構造方法中使用,用來呼叫本類中的其他構造方法(具體哪乙個由傳遞的引數決定),並且只能在構造方法的第一行使用
8、this與super區別
(1)this
當前物件的引用
呼叫子類的成員方法
在子類的構造方法第一行呼叫子類其他構造方法
(2)super
子類物件的父類引用
呼叫父類的成員變數
呼叫父類的成員方法
在子類的構造方法第一行呼叫父類的構造方法
9、繼承的優缺點
優點:提高**的復用性;提高**的可維護性
缺點:類的耦合性增強(開發原則是高內聚低耦合)
內聚:自己完成某種事的能力
耦合:類與類的關係
1、概述
分析事物發現共性內容,父類只知道子類應該包含什麼樣的方法,但是無法準確知道子類如何實現這些方法。方法功能宣告相同,但方法功能主體不同,這時也可以抽取,但只抽取方法宣告,不抽取方法主體,此方法就是乙個抽象方法。
(1)abstract:關鍵字,用於修飾方法和類
(2)抽象方法:不同類的方法是相似,但是具體內容又不太一樣,所以我們只能抽取他的宣告,沒有具體的方法體,沒有具體方法體的方法就是抽象方法
(3)抽象類:有抽象方法的類必須是抽象類
注意:乙個類繼承了抽象類需要重寫他所有的抽象方法,否則這個類就是抽象類
2、特點
抽象方法只能在抽象類裡
抽象類和抽象方法必須被abstract修飾
抽象類和類的關係是繼承
抽象類可以有非抽象的方法
抽象類不能建立物件(不能被例項化)
乙個類繼承了抽象類要麼重寫所有的抽象方法,要麼他自己就是抽象類
3、抽象類的成員特點
(1)成員變數
可以有成員變數
可以有常量
(2)成員方法
可以有抽象方法
可以有非抽象方法
(3)構造方法
可以有構造方法,需要對抽象類的成員變數進行初始化
4、抽象類的細節
(1)抽象類關鍵字abstract不能與private、final、static關鍵字共存
private:私有方法無法通過子類繼承,abstract必須要子類繼承實現這個方法,矛盾
final:抽象方法不能與final共存,是因為抽象方法後期需要被子類重寫,一旦加final就無法重寫
static:一旦加static,我們就可以通過類名直接訪問抽象方法,由於抽象方法沒有方法體,沒有任何意義,也不允許這麼做
(2)抽象類可以不定義抽象方法
不讓該類建立物件,方法可以直接讓子類使用
(3)抽象類是否有建構函式
有,抽象類的建構函式是有子類的super語句呼叫的,用於給抽象類中的成員初始化
繼承與抽象類
j a物件導向的編寫方式有三大特性,封裝 繼承與多型,現總結關於繼承的一些知識點。1 繼承體現在類與類之間的關係,object為j a所有類的父類 2 實現類的繼承通過關鍵字extends來實現,如 class 子類 extends 父類 3 類的單根性 乙個類只能有乙個父類,這點與c語言或c 不同...
繼承 抽象類
什麼叫做類與類的繼承,作用是什麼?繼承後,父類與子類之間,各成員有什麼樣的影響?構造方法 成員方法 子類中,如何呼叫父類的成員?如何使用本類的成員?抽象方法與普通成員方法有什麼區別?抽象類與普通類有什麼區別?物件 public class test2 abstract class a abstrac...
PHP 物件導向 抽象類繼承抽象類
抽象類繼承另外乙個抽象類時,不用重寫其中的抽象方法。抽象類中,不能重寫抽象父類的抽象方法。這樣的用法,可以理解為對抽象類的擴充套件。下面的例子,演示了乙個抽象類繼承自另外乙個抽象類時,不需要重寫其中的抽象方法。abstract class user abstract class vipuser ex...