親クラスであるAnimalクラスのmsg変数を子クラスで利用したいので、Dogクラスでmsgを定義してはいけませんね。
このように改良しました。
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 New(myname As String)
7 Me.myname = myname
8 End Sub
9 Sub Tell()
10 WriteLine( myname & "です")
11 End Sub
12 Sub Bark()
13 WriteLine(msg)
14 End Sub
15 End Class
16
17 Public Class Dog : inherits Animal
18 Sub New(myname As String)
19 Me.myname = myname & "犬"
20 Me.msg = "ワンワン"
21 End Sub
22 End Class
23
24 Public Class TestClass
25 <STAThread()> _
26 Shared Sub Main()
27 dim akitaDog as new Dog("秋田")
28 akitaDog.Tell()
29 akitaDog.Bark()
30 End Sub
31
32 End Class
takk@deb9:~/vbtest$
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 秋田犬です ワンワン takk@deb9:~/vbtest$
ワンワンが言えるようになりました。
では、Animalを継承して、猫も作ってみます。
24 Public Class Cat : inherits Animal
25 Sub New(myname As String)
26 Me.myname = myname & "猫"
27 Me.msg = "にゃー"
28 End Sub
29 End Class
30
31 Public Class TestClass
32 <STAThread()> _
33 Shared Sub Main()
34 dim akitaDog as new Dog("秋田")
35 akitaDog.Tell()
36 akitaDog.Bark()
37
38 dim persianCat as new Cat("ペルシャ")
39 persianCat.Tell()
40 persianCat.Bark()
41 End Sub
42
43 End Class
takk@deb9:~/vbtest$
実行してみます。
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 秋田犬です ワンワン ペルシャ猫です にゃー takk@deb9:~/vbtest$


コメント