C++_对象之间的关系与继承

派生类和基类之间的特殊关系是基于C++继承的底层模型的。

       实际上,C++有3种继承方式:公有继承保护继承私有继承

       公有继承是最常见的关系,它建立一种is-a的关系,即派生类对象也是一种基类,可以对基类对象执行的任何操作,也可以对派生类对象执行。is-a其实是is-a-kind-of的缩写。

       has-a关系:午餐可能包含水果,但是午餐不是水果。所以从Fruit类派生出的Lunch类来在午餐中添加水果。在午餐中加入水果的正确方法是将其作为一种has-a关系:午餐有水果。建模方式就是:将Fruit对象作为Lunch类的数据成员。

       is-like-a关系:律师像鲨鱼,但是律师不是鲨鱼。鲨鱼可以再水下生活,所以Shark类不能派生出Lawyer类。继承可以再基类的基础上添加属性, 但不能删除基类的属性。有些情况下,可设计包含共有特征的类,然后以is-a或has-a关系,在这个类的基础上定义相关的类。

       use-a关系:计算机可以使用激光打印机,但从Computer类派生出Printer类是没有意义的。然而可以使用友元函数或类来处理Printer对象和Computer对象之间的通信。

       公有继承还是只是用来建立is-a的关系比较好。

原文地址:https://www.cnblogs.com/grooovvve/p/10126534.html