什么是组合优于继承
时间:2012-6-6
如果你初识面向对象编程和我从前经历的一样--你花40分钟了解信息隐藏,22分钟用在作用域和可见性上,所有仁政的时间用来讨论继承,一旦你了解了关于对象,域和方法的基本知识以后,继承就是一个有趣的东西了--面向对象编程中最面向对象的部分,通过使用继承,你可以得到免费的实现:创建Widget的子类以后,你会神奇地获得Widget类中所有的好处。
继承有时貌似解决所有问题的方案。需要为一辆汽车建模?只需要创建Vehicle的子类。
而麻烦在于继承捎带了一些不的琐碎。当你创建一个已存在的类的子类时,你并非真正创建两个独立的实体,面是创建了两个绑定到一个通用实现内核的类,继承就其本意而言,力图将子类与超类结合,当修改一个超类中的行为时,其子类的行为也很可能被修改,更进一步即子类对其中超类的内丰构造具有唯一的了解,任何超类中没有被仔细隐藏掉的内部操作都会清晰地在子类中曝光。如果我们的目标是创建一个非紧密的系统,那么要建造这样一个系统,在其中的一个单一修改不会像一个打破玻璃那样一直到整个系统,我们可能就不再需要像平时那样依赖继承。