C++ 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关系时 不需要引用其他类的头文件只需要使用 前置声明。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。