物件導向程式設計基於三個基本概念:資料抽象、繼承和動態繫結;
在c++中,用類進行資料抽象; 用類派生從乙個類繼承另乙個類:派生類繼承基類的成員;
多型:動態繫結使編譯器能夠在 執行時 決定是使用基類中定義的函式還是派生類中定義的函式;
物件導向程式設計的關鍵思想是多型性(polymorphism);實現多型必須通過:1、繼承 2、動態繫結
通過動態繫結(dynamic binding)能夠編寫程式使用繼承層次中任意型別的物件,無須關心物件的具體型別。使用這些類的程式
無須區分函式是在基類還是在派生類中定義的;
在c++中,通過基類的引用(或指標)呼叫虛函式時,發生動態繫結。引用(或指標)既可以指向基類物件也可以指向派生類物件,這一事實是動態繫結的關鍵。用引用(或指標)呼叫的虛函式在執行是確定,被呼叫的函式是引用(或指標)所指物件的實際型別所定義的;
1void print(const
base &item, size_t n)25
/*6*base base1;
7*diver diver1; //diver繼承base;8*
9* net_price(size_t t)在base為virtual函式,並有實現(非純虛函式)
10* net_price(size_t t)在diver內也進行了函式實現11*
12*在print中呼叫基類中net_price()還是派生類中的net_price()呢?
13* 這個是由程式在執行時決定的,關鍵在於看引數base&的引用
14* 是指向基類物件呢,還是指向派生類物件呢,來直接確定的;
15*(實現的基礎是:基類的引用即可以指向基類物件也可以指向派生類物件)
16*/
1class
item_base
89 std::string book() const
1013
virtual
double net_price(std::size_t n) const
1417
virtual ~item_base()
1820
private:21
private
:22 std::string
isbn;
23protected
:24 std::string
isbn;
25protected:26
}27private
:28 std::string
isbn;
29protected:30
double
price;31}
32/*
除了建構函式之外,(析構函式最好加virtual)任意非static成員函式都可以是虛函式。
33*保留字只能在類內部的成員函式宣告中出現,不能用在類定義體外部出現的函式定義上;
34*/
c 物件導向程式設計 物件導向
什麼是物件導向 是對現實世界理解和抽象的方法。物件導向程式設計的特點 易維護,易擴充套件,靈活性好,重用 類 對事物的抽象定義,即事物具有的共同特徵和行為。物件 即對類進行例項 類是抽象的,物件是具體的 類的定義 語法 訪問修飾符 class 類名類的成員 包括字段,屬性,方法,常量,事件和索引器等...
C 物件導向程式設計
1.1 類與物件 物件 object 是類 class 的乙個例項 instance 如果將物件比作房子,那麼類就是房子的設計圖紙。所以物件導向程式設計的重點是類的設計,而不是物件的設計。類可以將資料和函式封裝在一起,其中函式表示了類的行為 或稱服務 類提供關鍵字public protected 和...
C 物件導向程式設計
物件導向程式設計 以物件為中心,將資料和方法封裝在一起。三要素 抽象繼承 多型 五個基本原則 單一職責原則 就乙個類而言,應該有且僅有乙個引起它變化的原因。開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。黎克特制替換換原則 子類應當可以替換父類並出現在父類能夠出現的...