码迷,mamicode.com
首页 > 编程语言 > 详细

C++ is-a was-a has-a holds-a

时间:2015-01-29 00:11:48      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:is-a   was-a   has-a   holds-a   

C++ is-a was-a has-a holds-a


flyfish 2015-1-28


is-a :公有继承(public inheritance)一般称为两个对象是之间是 is-a 关系

was-a: 私有继承称两个对象是 was-a 关系

has-a:has-a关系描述一个类中有另一个类型的实例

holds-a:描述的是一个类中保存了指向另一个类型的指针或者引用


is-a :Liskov替换原则(Liskov Substitution Principle)对is-a 做出了更具有限制性的定义

子类对象能够替换其基类对象被使用。适用于base classes身上的每一件事情一定也适用于derived classes身上,

因为每一个derived class对象也都是一个base class对象。


其中is-a和was-a是继承关系。has-a和holds-a 是组合关系.

尽量使用组合关系的原因

继承使设计的耦合度过于紧密,当一个类继承另一个类时,不管什么样的权限继承,子类都可以获得基类所有的public和protected成员的访问权限

使用组合时该类仅仅与其他类的public成员耦合。

当使用holds-a关系时 不需要引用其他类的头文件只需要使用 前置声明。


C++ is-a was-a has-a holds-a

标签:is-a   was-a   has-a   holds-a   

原文地址:http://blog.csdn.net/flyfish1986/article/details/43245717

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!