【问题标题】:Is interface ever useful for a OO language which supports multiple inheritance?接口对于支持多重继承的 OO 语言有用吗?
【发布时间】:2017-07-11 12:48:03
【问题描述】:

我听说引入接口是为了弥补面向对象语言不支持多继承而只支持单继承的一种方式。

接口只是用于那个目的吗?

接口对于支持多重继承的OO语言有用吗?

谢谢。

【问题讨论】:

  • 这是自 2014 年以来一直困扰我的问题(我知道接口的时间)。
  • 不,引入接口并不是为了克服单继承语言的限制。接口是一个接口——事物与世界其他部分交互的方式。这是每个实现类都必须履行的特定合同。一个类似的类比是 API - 只要服务提供了它所说的 API,你并不关心服务是从一个类还是另一个类“继承”
  • 但是如果我们可以直接使用函数还是有一些用处的。无论如何,我们不能仅通过提供方法签名来定义合约。 :D 真诚的道歉。
  • 你的意思是,如果你有接口/合约,函数是否有用? interface 是主要合约,而不是函数。一个类可能有一个名为Foo() 的方法。这并不意味着它实现了ITaxService.Foo()。它恰好与合约的方法同名。你也不关心什么执行这个合同。只要你得到任何实现合约的东西,你就可以使用它

标签: oop inheritance multiple-inheritance


【解决方案1】:

“设计模式”一书强烈强调接口的重要性,在编写它时,C++(具有多重继承)是最流行的 OO 语言,而 Java 甚至还不存在。 (这本书是在 Java 发布前一年出版的。)

了解对象的与其类型之间的区别很重要。

对象的类定义了对象的实现方式...相反,对象的类型仅指其接口——它可以响应的一组请求。

...

这两个概念很容易混淆,因为许多语言没有明确区分。

...

许多设计模式都依赖于这种区别。

这本书创造了“程序到接口,而不是实现”这个术语。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 2011-04-24
    • 2013-10-15
    相关资源
    最近更新 更多