c 類的重用

2021-08-20 05:45:19 字數 1281 閱讀 4973

一.類的組合

當類的成員是另乙個類的物件時,就形成了類的組合。

組合類建構函式定義的一般形式如下:

《類名》::《類名》(形參表):內嵌物件1(形參表),內嵌物件2(形參表),..

class point ; 

class line

line::line(point p1,point p2):pt1(p1),pt2(p2)

二.類的繼承

class 派生類名:繼承方式 基類名1,繼承方式 基類名2 ;

多繼承:乙個派生類同時有多個基類

通過公有繼承,基類中公有和保護成員的訪問屬性在派生類中不變,基類中公有成員在派生類中直接訪問,私有成員必須通過公有成員getx(),gety()才能訪問.

*向上轉型:

1.公有派生類的物件可以充當乙個基類的物件,反之不可以.

2.乙個公有派生類物件的指標值可以賦值給(初始化)乙個基類指標.

3.乙個派生類物件可以初始化乙個基類引用.

4.派生類物件可以賦值給乙個基類物件.

利用這樣的指標或引用,只能訪問派生類從基類繼承過來的成員,無法訪問派生類的自有成員.

(舉個栗子):

派生類物件的指標初始化基類指標:

furniture *sofa2 = new sofa("鋼材",410,1);//new 即為指標

派生類物件初始化乙個基類引用:

furniture &bed2 = *new bed("竹子",1280,"單人");

將乙個派生類物件直接賦值給乙個基類:

furniture bed3 = bed1;

*多繼承中同名隱藏和二義性問題

1.在多繼承中,乙個派生類的多個基類具有同名成員,如果派生類也宣告了同名函式時:

預設是訪問自己的函式,除非使用域運算子:: 如:

class d:public b1,public b2

int main()

*重複繼承和虛基類

在多繼承中:

class b;

class x:public b

class y:public b

class z:public x,public y

這裡z同時繼承了x和y,即重複繼承,增加了記憶體開銷,於是c++引入了虛基類的概念

class b;

class x:virtual public b

class y:virtual public b

class z:public x,public y

x和y是對b的虛繼承,z的資料實質上是從b繼承過來的.

2 類的重用

所有類的直接或間接的父類 不允許被繼承,不允許被覆蓋 單繼承,只能繼承乙個超類 extends 派生類繼承超類的所有資料成員和方法成員,除去沒有訪問許可權的成員。在超類中無法訪問子類中新增的屬性及方法。隱藏超類和子類中的屬性名相同,則超類的屬性被隱藏,訪問super.屬性名 包含抽象方法的類必須得是...

關於mapreduce中類重用機制

今天寫了乙個writable,其 如下 public class cfwritable implements writable public cfwritable int mark,listitems override public void write dataoutput out throws ...

如何重用實現類中的共用方法

我的類結構的這樣的.public inte ce commonuploadservicepublic inte ce citydayservice extends commonuploadservicepublic inte ce zhbtcitydayforecastservice extends...