1

我知道接口不能包含方法体,我们可以在另一个类中实现并且可以编写我们的自定义逻辑。但是同样的事情也可以通过对类使用继承来实现。那么为什么界面会出现。如果我们想覆盖任何方法定义,我们可以在类继承中做,并可以编写我们的自定义代码。接口的确切用途是什么?

4

2 回答 2

6

一个原因是一个类可以实现多个接口,但只能从一个类派生。

另一个是,层次上完全不相关的类可以实现相同的接口。在没有接口的静态类型语言中,人们经常可以观察到非常深的继承层次结构,这些继承层次结构只是因为它们不能简单地实现接口并且必须强制派生不相关的类。这往往会违反“Is a”——继承原则。这样的实现也倾向于拖拽未使用的代码,只是因为在继承树的下方需要它。

tl;dr - 可以做到,但结果往往很丑陋且无法维护

于 2012-09-07T09:25:31.940 回答
2
  • Interfaces - The object can do this.
  • Class - This is how the object does this.

Also interfaces can be used to avoid the diamond problem

于 2012-09-07T09:49:12.837 回答