如何定义类必须声明共享方法

时间:2015-04-28 13:52:49

标签: vb.net inheritance shared

我有几个继承自基类的类。我们称之为Zoo。 所有派生类都应该声明一个相同的方法Species,它返回这种动物园中的物种列表。

继承和MustOverride是我通常会做的事情:

Public Class Species

    Public Sub New(name As String)
        Me.Name = name
    End Sub
    Public Property Name() As String

End Class

基类:

Public MustInherit Class Zoo

    Public MustOverride Function Species() As List(Of Species)

End Class

派生类:

Public Class WaterZoo
    Inherits Zoo

    Public Overrides Function Species() As List(Of Species)
        Dim list As New List(Of Species)
        list.Add(New Species("whale"))
        list.Add(New Species("shark"))
        list.Add(New Species("dolphin"))

        Return list
    End Function
End Class

Public Class DesertZoo
    Inherits Zoo

    Public Overrides Function Species() As List(Of Species)
        Dim list As New List(Of Species)
        list.Add(New Species("lion"))
        list.Add(New Species("giraffe"))
        list.Add(New Species("antelope"))

        Return list
    End Function

End Class

现在,我可以使用这样的类:

Public Class Main

    Public Shared Sub Main(args() As String)
        Dim zoo1 As New WaterZoo
        Dim zoo2 As New DesertZoo

        Dim species1 = zoo1.Species()
        Dim species2 = zoo2.Species()

        Dim allSpecies = species1.Concat(species2)

        For Each s In allSpecies
            Debug.Print(s.Name)
        Next
    End Sub
End Class

但我想要实现的目标如下:

 Dim species1 = WaterZoo.Species()
 Dim species2 = DesertZoo.Species()

我希望共享Species - 方法(在C#中是静态的),因为实际的类设计要复杂得多,而且我不想仅仅为了获得这个列表而创建一个实例。 / p>

这里的问题是,你不能声明MustOverride Shared(C#中的虚拟静态)方法,这是有道理的。

但我怎样才能实现我想要做的事情呢?

0 个答案:

没有答案