马克C是对的(和往常一样)。
直接多重继承即使在支持它的语言中也是非常相反的。在某些边缘情况下,编译器应该做什么,比如当两个父类定义同一个方法或成员的不同版本时,这是一个大问题。它是明确的
不
允许在ADA95中添加继承。
所以你的下一个问题是“我该怎么做我想做的?”
这取决于您试图通过使用多重继承来实现什么。在最糟糕(最复杂)的情况下,您通常可以通过“mixin”继承来获得所需的效果。我
有
以前做过,但我仍然认为在这篇adaic文章中解释得最好:
Ada95 and Multiple Inheritance
我自己也做不到。
以下是摘要:
ada 95支持多重继承
模块包含(通过多个
“有/使用”条款,
多重继承
使用“via private”实现
扩展和记录合成,以及
通过
泛型、正式包和
访问歧视。
似乎ada 2005有另一种更简单的方法来实现这一点(“接口”),但我还没有机会尝试。您可以阅读更多关于它的信息(包括为什么Direct MI是
仍然
ADA认为不好)
here
. 我找到了这个例子。同样,只有当编译器支持ada 2005时,这才有效
Interfaces can be composed from other interfaces thus
type Int2 is interface;
...
type Int3 is interface and Int1;
...
type Int4 is interface and Int1 and Int2;
...