将基类扩展为派生类

时间:2013-05-03 08:12:28

标签: vb.net oop inheritance polymorphism

我们有两个班级BasicRace& AdvancedRace。 AdvancedRace继承自BasicRace

我有一个BasicRace,但我想把它'转换'为高级班。

请参阅以下代码作为示例:

Module Module1
    Sub Main()
        Dim bRace As New BasicRace With {.CourseID = 1, .MeetingDate = "2013-05-01", .RaceNumber = 1}
        Dim aRace As New AdvancedRace

        ' Upgrade bRace to AdvancedRace???????
    End Sub
End Module

Public Class BasicRace
    Public Property MeetingDate As Date
    Public Property CourseID As Integer
    Public Property RaceNumber As Integer
End Class

Public Class AdvancedRace
    Inherits BasicRace
    Public Property RaceTitle As String
End Class

任何帮助都会很棒 - 除非我编写一个函数将basicRace转换为AdvancedRace逐个遍历每个属性,否则我开始认为它无法完成?

1 个答案:

答案 0 :(得分:2)

您不能将基类转换为子类(不能更改现有对象的类型),但可以创建从基类复制属性的子类的新实例

为您的类实现此操作的典型方法可能是:

  • AdvancedRace中的构造函数,它接受BasicRace参数并从中复制属性
  • AdvancedRace中的静态方法,它接受BasicRace参数,创建具有复制属性的新对象,然后返回它

值得注意的是,这将导致两个完全独立的对象(每种类型中的一个)完全没有关联 - AdvancedRace对象中的更改不会反映在BasicRace中反之亦然。