Module Module1 ’コンソールアプリ
Sub Main()
'抽象クラス
Dim test As subCamera = New subCamera
test.Release()
Console.WriteLine(test.mainString)
'継承Inherits
Dim testKeisho As KeishoClass = New KeishoClass
testKeisho.keishoFunc()
testKeisho.OverTest() 'overrideした関数
'参照渡しと値渡しの勉強
Console.Write("初期値")
Dim i As Integer = 5
Console.WriteLine(i)
Dim sansho As SanshoClass = New SanshoClass
sansho.sansho(i)
Console.Write("参照:")
Console.WriteLine(i)
Console.Write("")
Console.Write("初期化")
i = 5
Console.WriteLine(i)
Console.Write("値渡し:")
Console.WriteLine(i)
sansho.atai(i)
Console.Write("値渡しは値は変わらず")
Console.WriteLine(i)
End Sub
End Module
'抽象クラス
MustInherit Class Camera
Public mainString As String
'mainString = "main" 'ここでは与えられない
MustOverride Sub Release() 'オーバーライドされる。というか何もない
End Class
Class subCamera : Inherits Camera
Overrides Sub Release()
mainString = "main"
Console.WriteLine("subCamera Release")
End Sub End Class
'継承クラス
Class NormalClass
Public Sub New()
'Inherits継承ではコンストラクタはオーバーライドされないことを知っておく。<br>
Dim newClassString As String
newClassString = "NewClassString"
Console.WriteLine(newClassString)
End Sub
Overridable Sub OverTest() '一文字が大文字
Console.WriteLine("overTest normal")
End Sub
End Class
Class KeishoClass : Inherits NormalClass
Public Sub New()
'Inherits継承ではオーバーライドされないことを知っておく。
'そのため親ClassのNewも実行されるので子Classでは差分を書くこと
Dim keisho As String
keisho = "keishoString"
Console.WriteLine(keisho)
End Sub
Overrides Sub OverTest() '一文字が大文字 オーバーライドした
Console.WriteLine("overTest overRide")
End Sub
Public Sub keishoFunc()
Console.WriteLine("keishoFunc")
End Sub
End Class
Class SanshoClass : Inherits NormalClass
'参照渡しの勉強 C言語ならポインタとかアドレスを使ったけどVBなのでBYREF,とかBYVALになる
Public Sub sansho(ByRef x As Integer)
x = 10 '参照なので値が変わる
End Sub
'値渡しの勉強
Public Sub atai(ByVal x As Integer)
x = 10 '値渡しなので値は変わらない
End Sub
End Class