前回の犬は吠えてなかったので、msgもMyBaseに代入して、吠えさせます。
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 MyBase.msg= Me.msg 20 End Sub 21 End Class
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 犬です ワンワン takk@deb9:~/vbtest$
では、犬クラスを派生させてドーベルマンクラスを作ってみます。
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 Sub New() 18 MyBase.myname = Me.myname 19 MyBase.msg= Me.msg 20 End Sub 21 End Class 22 23 Public Class Doberman : inherits Dog 24 Public myname As String = "Doberman" 25 Public msg As String = "Bowwow" 26 Sub New() 27 MyBase.myname = Me.myname 28 MyBase.msg= Me.msg 29 End Sub 30 End Class 31 32 Public Class TestClass 33 <STAThread()> _ 34 Shared Sub Main() 35 dim doberman as new Doberman() 36 doberman.Tell() 37 doberman.Bark() 38 End Sub 39 40 End Class takk@deb9:~/vbtest$
作ってみましたが、何か変な感じです。
犬クラス(Dog)とドーベルマンクラス(Doberman)が似たようなクラスで、なんだか派生させる意味がないように思えるからです。
実行してみます。
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 犬です ワンワン takk@deb9:~/vbtest$
どうしたことでしょう。ただの犬になっています。
つづく
コメント