繼承與抽象類

2021-10-02 00:00:13 字數 2688 閱讀 8434

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...