【发布时间】:2011-01-16 17:02:03
【问题描述】:
我试图将两个不同基类的功能组合成一个新类,但无济于事。假设我有 A 类和 B 类,而 B 是具有不同功能的 A 的后代(即在运行时不能用作 A 的替代品)并且需要一个结合了 A 和 B 的类 C,同时使用两者并提供C 用户的独特界面。我怎样才能实现这一点? C# 无法实现多重继承,接口似乎不适合。那我该怎么办?
【问题讨论】:
-
啊,组合也是不可能的。它必须是继承。
-
“B 是具有不同功能的 A 的后代(即在运行时不能用作 A 的替代品)”——这听起来确实很混乱。你为什么要这样做?
-
你能举例说明这些类会做什么吗?为什么接口和组合不起作用?
-
一个具体的例子可能会有所帮助。如果 B 派生自 A,则 B 的实例总是可以在运行时用作 A 的实例。您可以将 B 的实例向下转换为 A 的实例。另外,您能否进一步解释一下 C。您说 C 同时使用 A 和 B,并提供独特的接口。那为什么还要考虑多重继承呢?您的描述中没有任何内容提供从任何东西派生 C 的理由。
-
多重继承在 c# 中是可能的,但只能来自接口类型(是的,接口是 C# 中的类型:)),所以如果多重继承适合,那么接口应该是一个且相同的,这只是一个问题你把实现放在哪里