【发布时间】:2017-07-11 12:48:03
【问题描述】:
我听说引入接口是为了弥补面向对象语言不支持多继承而只支持单继承的一种方式。
接口只是用于那个目的吗?
接口对于支持多重继承的OO语言有用吗?
谢谢。
【问题讨论】:
-
这是自 2014 年以来一直困扰我的问题(我知道接口的时间)。
-
不,引入接口并不是为了克服单继承语言的限制。接口是一个接口——事物与世界其他部分交互的方式。这是每个实现类都必须履行的特定合同。一个类似的类比是 API - 只要服务提供了它所说的 API,你并不关心服务是从一个类还是另一个类“继承”
-
但是如果我们可以直接使用函数还是有一些用处的。无论如何,我们不能仅通过提供方法签名来定义合约。 :D 真诚的道歉。
-
你的意思是,如果你有接口/合约,函数是否有用? interface 是主要合约,而不是函数。一个类可能有一个名为
Foo()的方法。这并不意味着它实现了ITaxService.Foo()。它恰好与合约的方法同名。你也不关心什么执行这个合同。只要你得到任何实现合约的东西,你就可以使用它
标签: oop inheritance multiple-inheritance