vb.net类MustInherit接口

时间:2012-10-22 21:27:15

标签: vb.net interface abstract

我在VB.Net工作。

我有几个X个对象。他们每个人都需要拥有Y功能,因此我需要选择InterfaceMustInherit。我还需要为每个对象提供完全相同的Z函数。此函数仅由对象的抽象/实现方法使用,例如对于该类对象的打印输出。

最好的方法是什么?

2 个答案:

答案 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是正确的。我没有安装它所以我无法验证我的语法。