c 物件導向的程式設計

2021-09-06 22:10:31 字數 1549 閱讀 6594

物件導向程式設計基於三個基本概念:資料抽象、繼承和動態繫結

在c++中,用類進行資料抽象; 用類派生從乙個類繼承另乙個類:派生類繼承基類的成員;

多型:動態繫結使編譯器能夠在 執行時  決定是使用基類中定義的函式還是派生類中定義的函式;

物件導向程式設計的關鍵思想是多型性(polymorphism);實現多型必須通過:1、繼承  2、動態繫結

通過動態繫結(dynamic binding)能夠編寫程式使用繼承層次中任意型別的物件,無須關心物件的具體型別。使用這些類的程式

無須區分函式是在基類還是在派生類中定義的;

在c++中,通過基類的引用(或指標)呼叫虛函式時,發生動態繫結。引用(或指標)既可以指向基類物件也可以指向派生類物件,這一事實是動態繫結的關鍵。用引用(或指標)呼叫的虛函式在執行是確定,被呼叫的函式是引用(或指標)所指物件的實際型別所定義的;

1

void 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*/

1

class

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 物件導向程式設計

物件導向程式設計 以物件為中心,將資料和方法封裝在一起。三要素 抽象繼承 多型 五個基本原則 單一職責原則 就乙個類而言,應該有且僅有乙個引起它變化的原因。開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。黎克特制替換換原則 子類應當可以替換父類並出現在父類能夠出現的...