【发布时间】:2021-05-07 19:51:11
【问题描述】:
我有一个基类,一个类和一个子基类从该基类继承,还有两个从该子基类继承。
Public MustInherit Class Base
Public Function F1() As Int32
Return 1
End Function
End Class
Public Class B1
Inherits Base
End Class
Public MustInherit Class SubBase
Inherits Base
Public Function F2() As Int32
Return 2
End Function
End Class
Public Class S1
Inherits SubBase
End Class
Public Class S2
Inherits SubBase
Public Function F3() As Int32
Return 3
End Function
End Class
现在需要添加一个新功能 F4。非常复杂:不允许重复代码。
只需要提供给 B1 和 S1。 它不能让 S2 暴露它。
有人建议,接口可以提供多重继承,但是如何呢?由于接口不携带实现,我看不到如何使用接口在两个类中实现新功能。你能引导我走向正确的方向吗?
Public Function F4() As Int32
Return 4
End Function
编辑:重新设计没问题,只要所有显示的功能(而不是更多)都可用于 B1、S1 和 S2(加上新功能 F4 可用于 B1 和 S1,但不能用于 S2) .
【问题讨论】:
-
如果添加:
Public Interface IFunction4 Function F4() As Int32 End Interface并使 B1 和 S1Implements IFunction4,S2 将不会实现接口,因此它不会创建方法。不就是这样吗? -
@Jimi,但是一个接口没有实现。 B1 和 S1 都需要我实际提供一个实现。两次:在 B1 和 S1 中。在示例中它只是
Return 4,但在现实中这是一个复杂的故事。代码重复是不行的。 -
除非S1失去F2或B1获得F2,否则我认为你不能这样做
标签: .net inheritance interface multiple-inheritance