继承破坏封装

少用继承,主要是因为它破坏了封装。

这也是我的系统分析老师说的话。

这句话其实也迷惑了我很久。

多方查证并加以思考之后,实际上应该是这样解释的 在继承关系中,子类过度依赖父类,父类破坏了子类的封装性。

对!不是父类的封装性被破坏了!而是子类的封装性被破坏了!

父类中的公有与保护成员都会通过继承关系强制被子类继承,不管子类是不是真的需要。

那么如果我说,我遵守开闭原则,我不改父类不就没有这个问题了嘛?可以,很妥。

这篇博文且抛出这样一个问题待读者思考:

我们总是倾向使用关联(组合/聚合)吗?那么继承还有什么用呢?

Hint: 从语义上分析,好歹继承(inheritance)也是面向对象三大特性之一,怎么可能没用?