我在VB.Net工作。
我有几个X
个对象。他们每个人都需要拥有Y
功能,因此我需要选择Interface
或MustInherit
。我还需要为每个对象提供完全相同的Z
函数。此函数仅由对象的抽象/实现方法使用,例如对于该类对象的打印输出。
最好的方法是什么?
答案 0 :(得分:1)
不要理解你的问题。如果你想要一个好的答案,你可能想让你的问题更清楚。 根据我的理解,您想知道如何使用继承来创建两个+对象,这两个对象继承相同的MustInherit类并使用不同的实现执行类似的操作。 我不明白你的X功能和Z功能之间的区别。
Public MustInherit Class theBase
Public MustOverride Sub ZPrint()
End Class
Public Class a
Inherits theBase
Public Overrides Sub ZPrint()
' the "a" way to print
End Sub
End Class
Public Class b
Inherits theBase
Public Overrides Sub ZPrint()
' the "b" way to print
End Sub
End Class
Public Class theClass
Public Sub run()
Dim myA As theBase
Dim myB As theBase
myA = New a
myB = New b
myA.ZPrint()
myB.ZPrint()
End Sub
End Class
创建theClass的实例并执行run()方法。
答案 1 :(得分:1)
如果您希望有类实现Y
但不需要Z
函数,我只会使用接口。
鉴于所有子类都需要Z
函数,我会选择抽象。如果Z
仅在类中使用,请将其标记为Protected
,以便它仅对子类可见。
MustInherit Class BaseX
Public MustOverride Sub Y();
Protected Sub Z()
' TODO: Implement common version of Z.
End Sub
End Class
Class FirstX Inherits BaseX
Public Overrides Sub Y()
' TODO: Implement first version of Y.
' Call Z() as required.
End Sub
End Class
Class SecondX Inherits MyBaseClass
Public Overrides Sub Y()
' TODO: Implement second version of Y.
' Call Z() as required.
End Sub
End Class
注意:我希望我的VB是正确的。我没有安装它所以我无法验证我的语法。