繼承與多型

2022-03-11 22:19:16 字數 1071 閱讀 1307

一、繼承

定義:允許類派生子類(只可以單一繼承)

當子類繼承父類之後,父類中的所有公共的成員將被子類繼承(擁有),子類還可以擁有自己特殊的成員。子類無法繼承父類中的構造方法和private成員。

二、重寫

子類中存在與父類中同原型(一模一樣)的方法,子類中覆蓋了父類中的方法

final在繼承中的特殊用法:

final修飾父類中的方法,表示方法不能被子類覆蓋。

final修飾類,表示該類不能被繼承

super 關鍵字:

1.區別this成員和父類成員。

2.呼叫父類的成員。

三、繼承中的構造方法

子類不能繼承父類中的構造方法,子類可以呼叫父類中任何乙個可以訪問的構造方法。

1.只能在子類的構造方法中呼叫父類的構造方法。

2.每次只能呼叫乙個/次父類的構造方法。

3.呼叫父類的構造方法,必須在子類構造方法第一行完成。

易忘點:

建立子類物件時,會先建立(new)父類物件

呼叫子類構造方法時,必須手動或自動呼叫父類的構造方法

如果父類中的構造方法帶引數,子類的構造方法中必須手動呼叫父類的構造方法。

手動:super();

自動:只能呼叫父類中不帶引數的構造方法

四、多型

多型:同乙個方法名稱,不同的表示形態

多型實現的條件:

1.必須有繼承關係

2.子類對父類方法的重寫

3.父類的引用指向子類的例項

a.靜態多型:在編譯時即明確呼叫的是哪個類中的方法

又叫:編譯時多型   通常體在方法的過載

b.動態多型:執行時才能明確呼叫的是哪個類中的方法

又叫:執行時多型   通常體在方法的重寫

方法的過載、重寫區別:

1.過載量方法名相同,引數列表不同。(重寫方法與原方法一模一樣)

2.過載是編譯時多型(重寫是執行時多型)

3.過載是可以無限過載(重寫只能一次)

4.過載繼承關係不是必須的(重寫是必須有繼承關係)

表態塊static{}載入優先於子父類的構造方法。

(**本人其它賬號)

繼承與多型

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

繼承與多型

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

繼承與多型

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