接口

时间:2015-10-07 22:27:47

标签: oop inheritance interface composition

根据我的理解,可以有类继承和接口继承。接口是提供封装的方法之一。

Q1:那么为什么“继承总是会有弱封装”?

Q2:具有界面的合成被认为是一个很好的设计工具。怎么样和为什么?

请提供Java代码示例(如果可能)以便更好地理解。

1 个答案:

答案 0 :(得分:0)

Inheritance并不总是weak encapsulation

引用令人敬畏的JavaWorld文章

  

在继承关系中,通常会说超类   #&34;脆弱,"因为对超类的一点改动可能会迸发出来   并要求在应用程序代码中的许多其他地方进行更改。至   更具体地说,超类的实际上是脆弱的   接口。如果超类是精心设计的,那就是干净的分离   任何面向对象样式的接口和实现   对超类的实现的改变根本不应该涟漪。   但是,对超类界面的更改可能会出现问题   破坏使用超类或其任何子类的任何代码。   而且,超类接口的更改可能会破坏代码   它定义了它的任何子类。

我肯定会阅读这篇文章并浏览网站以获取各种不同的文章。有些Googling也可能会有所帮助:)

描述weak encapsulation的小例子:

  class Base {

    public void foo() {
      bar();
    }

    public void bar() {}
  }

  class Derived extends Base {
    @Override
    public void bar() {
      foo();
    }
  }

  public static void main(String[] args) {
    new Child().bar();
  }

似乎overridden bar会调用foo来调用bar课程中的base但事实证明,这是infinite recursion

如果使用得当,这是一个相当强大的工具。例如,如果implementing interface,则需要在base class中实施derived class中的所有方法。如果您知道存在默认行为的方法,请使用Inheritance并不要求实施所有方法,只需要override所需的方法。