次は、Animalを継承したDogクラスをすっきりさせてみます。
変数だけにしました。
takk@deb9:~/vbtest$ cat -n test.vb 1 Imports System.Console 2 3 Public Class Animal 4 Public myname As String = "動物" 5 Public msg As String = "" 6 Sub Tell() 7 WriteLine( myname & "です") 8 End Sub 9 Sub Bark() 10 WriteLine(msg) 11 End Sub 12 End Class 13 14 Public Class Dog : inherits Animal 15 Public myname As String = "犬" 16 Public msg As String = "ワンワン" 17 End Class 18
うまく動作するでしょうか。
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 動物です takk@deb9:~/vbtest$
動物になってしまいました。もちろん、吠えてくれません。
親のmynameがそのまま表示されているようです。
ということで、DogクラスにNewメソッドを増やして、親のmynameを更新するようにしてみました。
14 Public Class Dog : inherits Animal 15 Public myname As String = "犬" 16 Public msg As String = "ワンワン" 17 Sub New() 18 MyBase.myname = Me.myname 19 End Sub 20 End Class 21 22 Public Class TestClass 23 <STAThread()> _ 24 Shared Sub Main() 25 dim dog as new Dog() 26 dog.Tell() 27 dog.Bark() 28 End Sub 29 30 End Class
ビルドして実行すると、犬になりました。同じようにmsgも更新してやれば、吠えてくれます。
takk@deb9:~/vbtest$ mono test.exe 犬です takk@deb9:~/vbtest$
コメント