1.多型定義:同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。簡單的說:就是用基類的引用指向子類的物件。
2.如何實現多型:c++中的多型只能通過指向基類型別的指標和引用來呼叫物件的虛函式來實現。
實現多型有三種方式:虛方法,抽象方法,介面。
虛方法:子類重寫父類中的方法,對父類中的方法進行覆蓋。適用情況:父類中的方法對子類來說不適用,子類通過重寫該方法,覆蓋了父類中的方法。
public class person
}public class chinese : person
}
抽象方法:子類重寫父類中的方法,父類中不對方法進行實現,在子類中進行實現,父類是抽象類。適用情況:針對同一種型別抽象出來的父類,對某些行為和屬性大家都是公有的,但是這些屬性和行為實現方式並不一致。
abstract class person
class chinese : person
}
介面:實現介面的類,將介面中的方法實現。適用情況:a.當多個型別不能抽象出合理的父類時,但是又要對某些行為進行多型,將公共的方法抽象到乙個介面中,讓不同的子類呼叫。
public inte***ce iflyable//定義乙個介面,實用inte***ce 修飾,介面名以i開頭,介面中只能包括方法,且方法沒有訪問修飾符,方法不實現。
class student:person,iflyable//當乙個類繼承了父類,並且實現了多個介面的時候,被繼承的類必須寫在繼承列表的第乙個位置
}
3.多型分類:
(1)動態多型常指抽象類的繼承;
(2)靜態多型可用泛化程式設計實現,使用模板可行;
(3)函式多型即過載;
(4)巨集多型原因在於它只是進行對應位元組調換,不會辨別變數型別。
多型 2 多型的實現原理
當類中宣告虛函式時,編譯器會在類中生成乙個虛函式表 虛函式表是乙個儲存類成員函式指標的資料結構 虛函式表是由編譯器自動生成與維護的 virtual成員函式會被編譯器放入虛函式表中 存在虛函式時,每個物件中都有乙個指向虛函式表的指標 vfptr指標 物件在建立的時,由編譯器對vfptr指標進行初始化 ...
分類 繼承 封裝 多型
分類 category 作用 在不改變原類的基礎上為類新增一些方法 便於合作開發 注意 1.分類只能增加方法,不能增加成員變數 2.分類方法中可以訪問原類中已宣告的成員變數 3.分類中可以實現原類中的方法,覆蓋原類中的方法,使原類中的方法不能使用,所以一般分類中不實現原類的方法。4.方法呼叫優先順序...
多型的分類解析
多型分為兩種 通用的多型和特定的多型。兩者的區別是前者對工作的型別不加限制,允許對不同型別的值執行相同的 後者只對有限數量的型別有效,而且對不同型別的值可能要執行不同的 通用的多型又分為引數多型 parametric 和包含多型 inclusion 特定的多型分為過載多型 overloading 和...