我是面向对象编程技术的新手,据我所知,耦合是创建可维护,可重用代码的最大障碍。
当我们从基类继承几个子类时,子类是否变得依赖于基类?如果我必须在以后删除基类怎么办?这不会打破子类中的代码吗?
答案 0 :(得分:6)
是。这被称为Subclass Coupling:
描述孩子与其父母之间的关系。
与所有耦合一样,影响一个单位可能会影响依赖它的单位。
在这种情况下,删除父类会影响所有它的子类,因为删除超类型时会出现编译器错误。
这意味着子类与超类型耦合。
答案 1 :(得分:1)
父类及其子类之间的关系称为子类依赖或实现依赖。作为其他类型的依赖,实现依赖在两个类之间产生一些耦合。请记住,在您的架构中的类之间,必须最小化。
如 Design Pattern 一书中所述,减少这种耦合的唯一方法是使用以下原则:
编程到接口,而不是实现。
然后,如果必须使用继承,最好的方法是使用抽象类作为父类,并让子类只覆盖抽象方法。
在具体类之间使用继承也称为白盒代码重用。
父类通常至少定义其子类的一部分'物理代表。因为继承将子类暴露给其父实现的细节,所以它经常说" 继承打破了封装"。
然后,使用黑盒代码重用,而不是a.k.a.对象compisition,它不会破坏封装并最小化子类耦合。