is_a原则和has_a原则

一、
is-A继承关系:“表示类与类之间的继承关系、接口与接口之间的继承的关系以及类对接口实现的关系”。
has-A合成关系:“是关联关系的一种,是整体和部分(通常为一个私有的变量)之间的关系,并且代表的整体对象负责构建和销毁代表部分对象,代表部分的对象不能共享”
二、is_a是继承关系
has_a是组合关系(描述一个类中有另一个类型的实例)
简单的理解就可以这样:
has-a 就是这样:

class one{..};
class two
{
private:
  class one;
};

is-a 就是
class base{..};
class drivate :public base{..};


二、is-a :Liskov替换原则(Liskov Substitution Principle)对is-a 做出了更具有限制性的定义
子类对象能够替换其基类对象被使用。适用于base classes身上的每一件事情一定也适用于derived classes身上,
因为每一个derived class对象也都是一个base class对象
三、尽量使用组合关系的原因
继承使设计的耦合度过于紧密,当一个类继承另一个类时,不管什么样的权限继承,子类都可以获得基类所有的public和protected成员的访问权限
使用组合时该类仅仅与其他类的public成员耦合

你可能感兴趣的:(c++)