學習好幸苦。
c++ 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。
介面描述了類的行為和功能,而不需要完成類的特定實現。
通過多型與介面的配合,可以使得c++中同乙個函式在派生類與基類中實現方式不同,假設我們有乙個名為shape的類,circle和rectangle都是它的派生類,circle和rectangle的求面積的方式不同,如果我們可以重定義circle和rectangle的面積求取方式,那麼就更合適。
此時基類提供乙個介面,派生類對這個介面進行重定義,實現特定的功能。
在基類中,使用如下形式實現介面的定義:
virtual
double
getarea()=0;
在派生類中,使用如下形式實現多型:
// 圓形
class
circle
:public shape
};
要注意的是,在基類中,定義前要加上virtual,在派生類中,函式名字要相同。
接下來的例子會通過多型與介面實現求取circle和rectangle不同的面積。
#include
using
namespace std;
class
shape
void
setlength
(double lengthin)
void
setbreadth
(double breadthin)
virtual
double
getarea()
=0;protected
:double length;
// 長度
double breadth;
// 寬度};
// 圓形
class
circle
:public shape };
// 長方形
class
rectangle
:public shape };
intmain
(void
)
實現結果為:
the area of circle is 3.14159
the area of rectangle is 12
請按任意鍵繼續.
..
介面與多型的使用
介面與抽象類是一樣的作用,因為php是單繼承的,如果使用抽象類,子類完成抽象類就不能再去繼承其他的類 如果紀要實現一些規範,又想繼承乙個其他類,就需要用到介面 介面與抽象類的對比 1.作用一樣,都不能建立物件,需要靠子類完成 2.宣告方式不一樣 介面宣告方式 inte ce 介面名 3.介面被實現方...
c 多型與介面
靜態聯編 static binding 在編譯階段,確定函式的跳轉位址.早期聯編.動態聯編 dynamic binding 在執行階段,根據指向的物件,動態地確定跳轉位址.晚期聯編.include using namespace std class animal 介面 純虛函式 純虛函式主要用來實現...
C 多型的小總結
多型 多型的概念 相同物件收到不同訊息或不同物件收到相同的訊息時產生不同的動作 即允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡單的說,就是一句話 允許將子類型別的指標賦值給父類型別的指標。多型分類 1 靜態多型 也...