親クラスが子クラスのオブジェクトをインスタンス化することができるかどうかは、無限回帰にはならないのですか?それは無限再帰に入っています、とすぐにAppleがインスタンス化されるようスタックオーバーフローのスタックオーバーフロー
Module Module1
Sub Main()
Dim _baseFruit As New Fruit
_baseFruit.Write()
Console.ReadKey()
End Sub
End Module
Public Class Fruit
Public Property Type As String
Public Property BaseType As String
Public Property FruitType As New Apple
Sub New()
Type = "Fruit"
BaseType = "N/A"
End Sub
Public Sub Write()
Console.WriteLine("Type: {0} BaseType: {1} FruitType: {2} ", Type, BaseType, FruitType.Type)
End Sub
End Class
Public Class Apple
Inherits Fruit
Public Sub New()
Me.Type = "Apple"
End Sub
End Class
:
は、この例を考えてみましょう。これは不可能であると言うのは間違っていますか?つまり、親でも参照する子を参照することです。
編集:以下の回答から、私はコードを更新しました。見て、それは動作します。
Module Module1
Sub Main()
Dim _baseFruit As New Fruit
Dim _apple As New Apple
_baseFruit.Write(_apple)
Console.ReadKey()
End Sub
End Module
Public Class Fruit
Public Property Type As String
Public Property BaseType As String
Public Property FruitChildInstance As Apple
Sub New()
Type = "Fruit"
BaseType = "N/A"
End Sub
Public Sub Write(ByVal fruit As Apple)
FruitChildInstance = fruit
Console.WriteLine("Type: {0} BaseType: {1} FruitType: {2} ", Type, BaseType, FruitChildInstance.Type)
End Sub
End Class
Public Class Apple
Inherits Fruit
Public Sub New()
Me.Type = "Apple"
End Sub
End Class
非常に雄弁で分かりやすい。私はこれを説明するためにクラスを更新します。もちろん、私はあなたがこれをやっているならば、あなたの実装を再考する必要があるかもしれないが、悪い設計の落とし穴の素晴らしい例は決して少なくないと主張するだろう。 – deanvmc