続きです。
前回は継承といいつつ何もも継承してませんでした。
Animalをinheritします。
17 Public Class Dog : inherits Animal
これを追加して、以下のようになりました。
takk@deb9:~/vbtest$ cat -n test.vb
1 Imports System.Console
2
3 Public Class Animal
4 Private myname As String = "動物"
5 Private 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 Private myname As String = ""
19 Private msg As String = ""
20 Sub New(myname As String)
21 Me.myname = myname & "犬"
22 End Sub
23 Sub Tell()
24 WriteLine( myname & "です")
25 End Sub
26 Sub Bark()
27 WriteLine(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 End Sub
37
38 End Class
takk@deb9:~/vbtest$
takk@deb9:~/vbtest$ vbnc test.vb Visual Basic.Net Compiler version 0.0.0.5943 (Mono 4.0.1 - tarball) Copyright (C) 2004-2010 Rolf Bjarne Kvinge. All rights reserved. Assembly 'test, Version=0.0, Culture=neutral, PublicKeyToken=null' saved successfully to '/home/takk/vbtest/test.exe'. Compilation successful Compilation took 00:00:00.5088390 takk@deb9:~/vbtest$
takk@deb9:~/vbtest$ mono test.exe 秋田犬です takk@deb9:~/vbtest$
次に、AnimalクラスのmynameをPublicに変更して、
Dogクラスではmynameを削除します。
Tellメソッドも削除します。
takk@deb9:~/vbtest$ cat -n test.vb
1 Imports System.Console
2
3 Public Class Animal
4 Public myname As String = "動物"
5 Private 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 Private msg As String = ""
19 Sub New(myname As String)
20 Me.myname = myname & "犬"
21 End Sub
22 Sub Bark()
23 WriteLine(msg)
24 End Sub
25 End Class
Dogクラスは、Animalクラスのメソッドが使えるので、Tellを実行すると、mynameにアクセスできます。
27 Public Class TestClass
28 <STAThread()> _
29 Shared Sub Main()
30 dim akitaDog as new Dog("秋田")
31 akitaDog.Tell()
32 End Sub
33
34 End Class
実行すると、
takk@deb9:~/vbtest$ vbnc test.vb ~省略~ takk@deb9:~/vbtest$ mono test.exe 秋田犬です takk@deb9:~/vbtest$
同じ結果です。


コメント