根据Adaic,Ada中的接口定义为 “没有组件也没有具体操作的标记类型”。它可以用于多重继承。 相反,抽象类型是一种标记类型,旨在用作其他类型的祖先,但不允许拥有自己的对象。
两者的本质区别仅仅是接口的多重继承特性吗?这些类型可以互换使用吗?
接口不能有任何组件,并且一个接口的所有操作都必须是抽象的。抽象标记类型可能具有组件并且可能具有非抽象操作。
具体类型可以扩展多个接口,但只能扩展单个标记类型。
“恕我直言,接口毫无价值。” Randy Brukardt,ARG 成员兼 ARM 编辑
我认为在某些情况下,如果没有界面,解决问题是非常困难的,甚至是不可能的。一个非常传统的例子是依赖注入。