1,訪問屬性
區分內部可見(成員函式對資料成員的訪問)和外部可見(物件對成員的訪問)
1)public:內部和外部皆可見
2)private:內部可見,外部不可見
3)protected:內部可見,繼承類的內部可見,外部不可見
繼承屬性:
public型別的繼承:在子類中,原來public,protected,private等依舊為public,protected,private
protect型別的繼承:在子類中,原來public,protected,private等變為protected,protected,不可見
private型別的繼承:在子類中,原來public,protected,private等變為private,private,不可見
結合訪問屬性和繼承屬性,就可以推導處各種情況下的訪問許可權問題。其中private只能在父類內部呼叫,對於其他都是不可見的。
2,繼承的二義性
1)乙個指向基類的指標可以指向該類的任何派生類物件,這是c++實現多型的關鍵
2)可以把基類的指標/引用強制轉換為派生類的指標/引用,這再j**a裡面是不容許的,但再c++裡面,利用該指標再呼叫子類具有,基類沒有的屬性的時候,居然不報錯,實在很神奇。
3,虛函式與多型
c++中的虛函式可以被物件正常呼叫,純虛函式才類似於j**a裡的抽象函式。一旦基類宣告虛函式,那麼不管子類有沒有virtual,都為虛函式。
多型是指同乙個操作作用於不同的物件會產生不同的相應,分為靜態多型和動態多型。
靜態多型發生在編譯階段,如函式過載。(通過不同物件呼叫對應函式本質上不叫多型)
動態多型發生在執行階段,通過虛函式和指標/引用來實現。
(使用指標訪問非虛函式時候,編譯器根據指標本身型別決定呼叫哪個函式;使用指標訪問虛函式的時候,編譯器根據指標指向的物件型別決定呼叫哪個函式)。因此:實現動態多型需要滿足兩個條件:
1)成員函式宣告為虛函式
2)使用指向基類型別的指標或者引用進行函式呼叫
4,c++類的記憶體布局
1)對於乙個類來說,類裡面的static資料成員存放在所有物件之外,非static成員被配置到每個物件。不會對物件占用的記憶體造成影響。
2)類裡面的成員函式也放置在所有物件之外,如果類包含虛函式,那麼編譯系統給每乙個物件乙個虛函式指標(ptr),指向每個物件自己的虛函式表。虛函式表中記載的是對應需要呼叫函式的入口位址。
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
C 物件導向程式設計
1.1 類與物件 物件 object 是類 class 的乙個例項 instance 如果將物件比作房子,那麼類就是房子的設計圖紙。所以物件導向程式設計的重點是類的設計,而不是物件的設計。類可以將資料和函式封裝在一起,其中函式表示了類的行為 或稱服務 類提供關鍵字public protected 和...
C 物件導向程式設計
物件導向程式設計 以物件為中心,將資料和方法封裝在一起。三要素 抽象繼承 多型 五個基本原則 單一職責原則 就乙個類而言,應該有且僅有乙個引起它變化的原因。開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。黎克特制替換換原則 子類應當可以替換父類並出現在父類能夠出現的...