親クラスである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$
コメント