作者在 2008-01-17 14:06:40 发布以下内容
今天在复习的时候看到了这个,上来说说。
继承是面向对象编程的重要组成部分。可以通过继承,构建一个新的类,从而获得父类的变量和方法,实现对父类的复用。这里,复用一般指两个方面。一是继承父类然后覆盖掉其中的一些方法,二是复用父类的代码来完成一些事务处理。而合成,简单点说,就是在一个新的类里面创建一个已有类的对象,通过这个对象来调用已有类的方法来完成任务。
也许有人看到了在Java中,鼓励使用合成而不是继承。为什么呢?首先,是因为继承破坏了面向对象编程的另一个特点--封装性。继承使父类和子类之间的耦合度增强。第二,如果一旦父类需要修改,那么子类也等于被修改了。第三,不同的包通常由不同的程序员管理,因此,继承一个不同包里面的类往往是有风险的。
我们如果需要复用父类的代码而不需要覆盖掉里面的方法的话,那么,这个时候用合成是最合适不过的了。