根据 Adaic 的说法,Ada 中的接口被定义为“没有组件和具体操作的标记类型”。它可以用于多重继承。相反,抽象类型是一种标记类型,旨在用作其他类型的祖先,但不允许拥有自己的对象。
两者的本质区别仅仅是接口的多重继承特性吗?否则这些类型可以互换使用吗?
一个接口不能有任何组件,一个接口的所有操作都必须是抽象的。抽象标记类型可能有组件,也可能有非抽象操作。
一个具体类型可以扩展多个接口,但只能扩展一个标记类型。
“恕我直言,接口毫无价值。” Randy Brukardt,ARG 成员和 ARM 编辑