次は、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$


コメント