當我創建我的Vehicle類的實例時,出現System.StackOverflowException。我相信這是因爲我有一個對象引用了我的Car類,該類繼承自Vehicle,並且它陷入了一個無限循環。System.StackOverflowException當創建類的實例
Public Class Vehicle
Public Car As New Car
End Class
Public Class Car
Inherits Vehicle
Public Sub doStuff()
'does stuff
End Sub
End Class
雖然可能是不好的做法,我有它的結構是這樣,因爲我需要能夠從另一個文件訪問doStuff()
,而無需創建Car
一個實例,像這樣:
'some other file
Public Class Foo
Private Vehicle As New Vehicle
Vehicle.Car.doStuff() 'this is what I am trying to accomplish
End Class
是還有另一種方法可以實現這一目標?
編輯:由於似乎有一點混淆,我想澄清一下,我有多個繼承自車輛(汽車,卡車,自行車等)的類。所有這些類都有其獨特的方法,但都需要使用Vehicle的一些方法和屬性。使用virtual
不是我正在尋找的,因爲我不需要重寫任何方法。
汽車不應該實例化汽車類,它應該是相反的方式 – soohoonigan
不知道「doStuff()」做了什麼,很難說,但「我需要能夠訪問'doStuff()'從另一個文件不需要創建一個'Car'的實例,通常可以通過將其設置爲Shared來解決 - 即'Public Shared Sub doStuff()'。然後你可以直接從'Foo'中的方法調用它:'Car.doStuff()'。 – Mark
你不只是'有一個對象參考車類'車**創建**一個**新**車實例和車繼承車輛,因此無盡循環:車輛 - >車 - >車... – Plutonix