繼承與多型

2021-08-08 19:57:43 字數 1257 閱讀 8432

使用場景

當多個類之間有關係並且包含相同功能,但是功能主體不同,可以考慮向上抽取,只抽取功能含義,不抽取功能主體。由於功能主體不知道,故該方法是抽象的,修飾方法為abstract,包含了抽象方法的類是抽象類,也需要在類上加abstract。

當不想讓外界建立物件時,也可修飾類為abstract。

抽象類的特點

抽象類不可以建立物件。

若子類沒有覆蓋抽象類的所有抽象方法,那麼子類也是乙個抽象類。

抽象類可以沒有抽象方法,但包含抽象方法的類一定是抽象類。

使用場景

當事物除了包含基本功能外,還有一些擴充套件功能,可將這些擴充套件功能抽象到介面中,是對外暴露的規則。
介面中成員的特點

1. 變數:預設是常量,被修飾為public static final。

2. 方法:預設是抽象方法,被修飾為public abstract。

介面在繼承中的特點

介面可以被子類多實現,因為介面的方法是抽象的,沒有方法體,子類呼叫不會產生衝突。

介面與抽象類的區別

1. 介面是like a,抽象類是has a,即介面提供擴充套件功能,是對外暴露的規則,而抽象類提供子類的基本功能。

2. 當事物之間有內在聯絡時用抽象類,當只是有相同的操作時用介面。

3. 子類能實現多個介面,但是只能繼承乙個抽象類。

4. 介面的方法都是抽象的,抽象類可以沒有抽象方法。

使用場景

子類繼承抽象類或者實現介面。

當子類要重新賦予乙個方法的含義時。

覆蓋注意事項

子類覆蓋父類,子類方法許可權必須大於父類。

靜態只能覆蓋靜態。

多型的體現:父類引用指向子類物件。

多型的好處:提高了**的擴充套件性。

多型的弊端:只能使用父類中的成員。

多型的前提:多個子類繼承或實現,並且覆蓋。

object類中的equals()和tostring()

super(屬性):呼叫父類建構函式

super.屬性:訪問父類同名屬性

super.方法名():訪問父類的成員函式

類:不可以被繼承,彌補了繼承導致破壞封裝性的問題

屬性:常量,只能賦值一次,一般與static共同修飾

方法:不可以被覆蓋

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...

繼承與多型

虛函式只要在基類裡定義,所以繼承類都不用重新定義為虛函式,自動成為虛函式。虛函式必須有實現,普通成員函式在沒有呼叫時可以沒有實現 定義 class animal 只需要在基類定義函式為虛,子類中不需要新增virtual.smile函式在沒有呼叫時可以不實現。當有函式為虛函式時,析構函式應定義為vir...

繼承與多型

繼承需要符合的關係 is a,父類更通用 子類更具體 子類繼承父類的所有屬性和方法 不包括父類構造方法 super可以呼叫父類的方法和構造方法 子類可以重寫父類的方法 使用多型之後,當需要增加新的子類型別時,無需更改總部類,程式的可擴充套件性及可維護性增強 簡單來說,多型是具有表現多種形態的能力的特...