无法在Visual Basic中将对象强制转换为其父对象

Tar*_*rik 1 vb.net

在C#中我们可以这样做:

Honda a = new Car(); 这工作,但同样的一个在Visual Basic.NET中不起作用(我是Visual Basic的新手)

Dim a as Honda = new Car 并且它表示无法将"SampleApp.Car"类型的对象转换为"SampleApp.Honda"类型.

这有什么不对?

这是我的示例代码:

Module Module1

    Sub Main()
        Dim a As B = New A
        Console.WriteLine(a.DoSOmething())
        Console.ReadLine()
    End Sub
End Module

Class A
    Public Overridable Function DoSOmething() As String
        Return "SOmething"
    End Function
End Class

Class B
    Inherits A

    Public Overrides Function DoSOmething() As String
        Return "Something else"
    End Function

End Class
Run Code Online (Sandbox Code Playgroud)

Bry*_*her 5

本田比汽车更具体,可能包括其他功能或行为.你可以毫无问题地将一辆本田汽车投入汽车,但不能将汽车投入本田.

编辑:例如,本田可能包含ActivateVTEC方法,而所有汽车都有加油方法,所以如果你能够创建一辆本田=新车,ActivateVTEC将是未定义的.