C 包含與繼承

2021-09-10 15:07:38 字數 2272 閱讀 2303

class point 

double

getx()

double

gety()

void

setx

(double x)

void

sety

(double y)};

class line };

intmain()

class point 

double

getx()

double

gety()

void

setx

(double x)

void

sety

(double y)};

class line

double

getdistance()

void

setp1

(double x,

double y)};

intmain()

class line 

line

(double ax =0,

double ay =0,

double bx =0,

double by =0)

:p2(bx,by),p1

(ax,ay)

//雖然p2在前,但是根據宣告順序,先構造p1};

intmain()

基類成員在派生類中的可見性

訪問宣告

通過繼承基類,派生類就擁有訪問基類protected 成員特權,如果擔心封裝性被破壞,可以宣告為private,在protected中提供訪問器函式。

通常私有繼承可以被包含所代替,protected繼承也不經常使用。

例項

class shape 

如果擴充了派生類的介面,那麼派生類物件可以接收的訊息就有別於基類物件了,能傳送給基類物件的訊息扔然能傳送給派生類,反之則不能。這時,派生類與基類之間可以描述為「is-like-a」關係。

不能自動繼承的成員 例項

class point2d 

double

getx()

double

gety()

void

setx

(double xx)

void

sety

(double yy)

void

moveto

(double xx,

double yy)

void

print()

};class point3d : public point2d

double

getz()

void

setz

(double zz)

void

moveto

(double xx,

double yy,

double zz)

//覆蓋了point2d::moveto

包含與繼承

在 大全 這本書的第六章中提到了有關包含與繼承的一些原則,我摘取如下 一 包含 has a 包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成...

私有繼承與包含

c 要實現has a關係,除了包含,還可以使用私有繼承。私有繼承的基類所有public,protected方法都會變成派生類中的private方法,這意味著基類方法不會成為派生類公有介面一部分,即只能通過派生類的基類成員呼叫基類方法。私有繼承的語法 用private修飾基類 private是預設修飾...

C 包含和繼承

包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成員的類。繼承的概念是說乙個類是另乙個類的一種特化。1 採用public繼承實現 is a 的...