美文网首页
条款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