c++要實現has-a關係,除了包含,還可以使用私有繼承。
私有繼承的基類所有public,protected方法都會變成派生類中的private方法,這意味著基類方法不會成為派生類公有介面一部分,即只能通過派生類的基類成員呼叫基類方法。
私有繼承的語法:
//用private修飾基類
//private是預設修飾關鍵字,若繼承時未註明public,則是private繼承
class student:private valarray,private string;
私有繼承和包含的主要差別在於,包含為派生類提供的是顯式命名的物件成員,而私有繼承提供的是無名稱的物件成員。比如建構函式:
//包含的建構函式
class student
};//私有繼承的建構函式
typedef valarrayvarraydb;
class student:string,varraydb //要用string(str),str需是乙個c式字元型指標
};
包含與繼承
在 大全 這本書的第六章中提到了有關包含與繼承的一些原則,我摘取如下 一 包含 has a 包含表示乙個類含有乙個基本資料元素或物件。包含是物件導向程式設計的主力技術。1 通過包含來實現 has a 的關係。2 在萬不得已時通過private繼承來實現 has a 的關係。3 警惕有超過有7個資料成...
C 包含與繼承
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 vo...
C C private私有繼承
private繼承方式 1 基類成員對其物件的可見性 公有成員可見,其他成員不可見。2 基類成員對派生類的可見性 公有成員和保護成員是可見的,而私有成員是不可見的。3 基類成員對派生類物件的可見性 所有成員都是不可見的。所以,在私有繼承時,基類的成員只能由直接派生類訪問,而無法再往下繼承。a con...