前言:
封裝可以隱藏實現細節,使得代碼模塊化;繼承可以擴展已存在的代碼塊(類);泛型是為了顯現算法與類型脫離;它們的目的都是為了實現代碼重用;而多態則是為了實現接口重用。
一、多態
1.多態性指相同對象收到不同消息或不同對象收到相同消息時產生不同的實現動作。C++支持兩種多態性:編譯時多態性,運行時多態性。
a.編譯時多態性:通過重載函數實現
b運行時多態性:通過虛函數實現。
2.運行時多態可以簡單的概括為“一個接口,多種方法”,在程序運行的過程中才決定調用的函數。多態是面向對象編程領域的核心概念。在C++中 通過虛函數virtual function實現。
3.(最抽象解釋)多態性是允許你將父對象設置成為和它的一個或多個子對象相等的技術,賦值之后,父對象就可以根據當前賦給它的子對象的特性以不同的方式運作。其本質就是將子類類型的指針賦值給父類型的指針,只要這樣的幅值發生了,多態也就產生了,因為實行了向上映射。
二、泛型
泛型編程是一種基于發現高效算法的最抽象表示的編程方法,所謂泛型編程就是獨立于任何特定類型的方式編寫代碼,即做到算法與類型脫離。
???????? STL的容器、迭代器、算法都是泛型編程的例子,而模板泛型編程的基礎,模板是創建類或函數的基礎或公式。
template <typename T>。
三、繼承
圖中三種顏色表示三種不同的訪控屬性。
綠色表示子類成員和外部均可以訪問;
黃色表示子類成員可以訪問,但外部不可以訪問;
紅色表示子類成員和外部都不可以訪問。
public繼承:
1.基類成員對派生類的可見性對派生類來說:基類的public成員和protected成員可見(即可被派生類的成員函數調用);基類的public成員和protected成員作為派生類的成員時,他們都保持原有的狀態;基類的private成員不可見,不可被訪問。
2.派生類的實例對象,只可調用(訪問)基類的public成員,即只有基類的public成員對派生類的實例對象可見。基類其他的成員不行。
private繼承:
1.基類成員對派生類的可見性對派生類來說:基類的public成員和protected成員可見(即可被派生類的成員函數調用);基類的public成員和protected成員作為派生類的私有成員,并且不能被這個派生類的子類訪問;基類的private成員不可見,不可被訪問。
2.派生類的實例對象,基類的所有成員都不可見。
protected繼承:
1.基類成員對派生類的可見性對派生類來說:基類的public成員和protected成員可見(即可被派生類的成員函數調用);基類的public成員和protected成員作為派生類的protected成員,并且不能被這個派生類的子類訪問;基類的private成員不可見,不可被訪問。
2.派生類的實例對象,基類的所有成員都不可見。
虛函數繼承和虛繼承
虛函數繼承就是覆蓋,是為了解決多態性的問題。
虛繼承是多重繼承中特有的概念,繼承就是為了節約內存的。