Linux(mono)でVB、継承(その6)

前回の犬は吠えてなかったので、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$

どうしたことでしょう。ただの犬になっています。

つづく

コメント

タイトルとURLをコピーしました