美文网首页
条款32 确定你的public继承是is-a关系

条款32 确定你的public继承是is-a关系

作者: 沧海梦帆 | 来源:发表于2016-12-02 19:49 被阅读0次

问题描述

一个经典的例子:一个rectangle的基类有个通过增加宽度来增加面积的函数makebigger,一个square类public继承rectangle,然而square 通过调用makebigger够长宽会不一致。这明显不是我们想要的。

事实

public继承确定的是一种is-a的继承关系,就是说子类是基类的一个特例,能作用于基类的操作一定可以无歧义的作用于子类,所以在确定派生类型为public时,一定要考虑是不是is-a的关系。一定要想明白,这种is-a的关系并非我们日常生活中猫是动物、老师是人、麻雀是鸟的关系,虽然在很多问题抽象中会有一定的重叠。

结论

public意味着is-a。如果出现问题描述中的情况,那么只能说明问题抽象不对。要按照操作接口上是否同意来抽象归类。

相关文章

网友评论

      本文标题:条款32 确定你的public继承是is-a关系

      本文链接:https://www.haomeiwen.com/subject/phyqmttx.html