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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA