继承是否会增加耦合?

时间:2015-03-21 19:48:47

标签: java c++ oop

我是面向对象编程技术的新手,据我所知,耦合是创建可维护,可重用代码的最大障碍。

当我们从基类继承几个子类时,子类是否变得依赖于基类?如果我必须在以后删除基类怎么办?这不会打破子类中的代码吗?

2 个答案:

答案 0 :(得分:6)

是。这被称为Subclass Coupling

  

描述孩子与其父母之间的关系。

与所有耦合一样,影响一个单位可能会影响依赖它的单位。

在这种情况下,删除父类会影响所有它的子类,因为删除超类型时会出现编译器错误。

这意味着子类与超类型耦合。

答案 1 :(得分:1)

父类及其子类之间的关系称为子类依赖实现依赖。作为其他类型的依赖,实现依赖在两个类之间产生一些耦合。请记住,在您的架构中的类之间,必须最小化。

Design Pattern 一书中所述,减少这种耦合的唯一方法是使用以下原则:

  

编程到接口,而不是实现。

然后,如果必须使用继承,最好的方法是使用抽象类作为父类,并让子类只覆盖抽象方法。

在具体类之间使用继承也称为白盒代码重用

  

父类通常至少定义其子类的一部分'物理代表。因为继承将子类暴露给其父实现的细节,所以它经常说" 继承打破了封装"。

然后,使用黑盒代码重用,而不是a.k.a.对象compisition,它不会破坏封装并最小化子类耦合。