1

我在 VB.Net 工作。

我有几个X对象。每一个都需要有这个Y功能,所以我需要选择Interfaceor MustInherit。我还需要Z为每个对象提供完全相同的功能。此函数仅由对象的抽象/实现方法使用,例如此类对象的打印输出。

最好的方法是什么?

4

2 回答 2

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() 方法。

于 2012-10-22T21:53:23.983 回答
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 是正确的。我没有安装它,所以我无法验证我的语法。

于 2012-10-22T23:29:59.757 回答