Ada:接口和抽象标记类型的区别?

dig*_*hog 1 interface ada

根据 Adaic 的说法,Ada 中的接口被定义为“没有组件和具体操作的标记类型”。它可以用于多重继承。相反,抽象类型是一种标记类型,旨在用作其他类型的祖先,但不允许拥有自己的对象。

两者的本质区别仅仅是接口的多重继承特性吗?否则这些类型可以互换使用吗?

Jef*_*ter 6

一个接口不能有任何组件,一个接口的所有操作都必须是抽象的。抽象标记类型可能有组件,也可能有非抽象操作。

一个具体类型可以扩展多个接口,但只能扩展一个标记类型。

“恕我直言,接口毫无价值。” Randy Brukardt,ARG 成员和 ARM 编辑

  • 感谢您的回答!我个人认为接口对于某些 OOP 设计模式可能很有用,可以定义类型所需的(纯虚拟)过程。 (3认同)
  • @digital_hog 接口在其他领域很有用。尽管 Ada 使用类型扩展来实现接口,但还有其他方法来实现接口。在进行自上而下的软件设计时,接口非常有用,这不仅限于 OOP 设计选择。能够围绕多个交互的抽象接口来设计软件是一个强大的工具,可以大大改善维护和重用。将接口想象成动态合约。 (2认同)