師匠T:さて。前回はちょっとしたミスで、予定が変わってしまったが、今回は改めてクラスについて説明していくことにするぞ。
弟子D:師匠ももう年……いてっ。
余計なことは言わんでいい。ではさっそくはじめていくとするぞ!
【 クラスとは? 】
さて。まずはクラスとは何かについてじゃ。これについては、以前のJava道場で説明したが、改めて復習しておくとしようぞ。弟子よ、クラスとはなんぞや?
あ、はい。オブジェクトというものの設計図のようなもので、それをもとにして作られたのがインスタンスですよね。ザクに例えるなら、ザクの設計図がクラスで、作られたザクがインスタンスと。
うむ、その通りじゃ。さらに、クラスに別の機能を付与して新しいクラスを作る『継承』ができるのも、クラスの特徴であったな。
そうでしたっけ。
お主の記憶容量は、数十年前のPC並みしかないのか? こほん。では次の項目では、クラスの作り方、そしてインスタンスの作り方について説明していくぞ!
【 クラスの作り方、そしてインスタンスの作り方じゃ! 】
さて。VB.NETでは、クラスを作るにはちょっとした手間をかけなくてはならぬ。まずは、『プロジェクト』メニューから、『クラスの追加』を選ぶ。
ふむふむ。
すると、次のウィンドウが開くので、クラス名を入力してOKを押す。これだけでOKじゃ。
なるほど!
なお、この方法で作るだけではなく、モジュール内にコードを書いて作ることもできるぞ。その場合は次のように宣言部分を書く。
--------------------
Class クラス名
~
End Class
--------------------
~の部分に動作などのコードを書くわけですね。もしかして、このクラスをどこからでも使えるようにしたい場合には、Classの前にPublicをつけるのですか?
おぉ、よくぞそれに気づいたのう。その通りじゃ。さすが我が弟子。
俺だってバカなままじゃありませんよ!
ほほう。それでは、クラスのメソッドやセッター・ゲッターを作りたい時にはどうすればいいのか述べてみよ。
え? えーと、えーと……。
メソッドを作りたい場合には、そのクラスにサブルーチンを作ってやればよいのだ。ゲッターを作りたいなら関数を作ってやればよい。セッターを作りたいなら、やはりサブルーチンを作ればよいぞ。
--------------------
Class Sisyo
Sub Method()←メソッドになる
~
End Sub
Public Function Getter() As Integer←ゲッターになる
~
End Function
Public Sub Setter(p As Integer)←セッターになる
~
End Sub
End Class
--------------------
なお注意点として、上の例のようにゲッター、セッターにする関数・サブルーチンを作るときにはPublicをつけること。さもないと、外から使うことができずに、ゲッター・セッターの役割をすることができなくなってしまうからの。
はい。
そしてそれと同じようにメソッドも、外から使えるメソッドにする場合には、Publicをつけることを忘れずに。
わかりました、師匠!
うむ。さて、コンストラクタを作る場合には、次のように宣言する。
--------------------
Public Sub New(~)
~
End Sub
--------------------
Newという名のサブルーチンを、Publicをつけて作るわけですね。
その通りじゃ。さて、いよいよインスタンスを作る方法じゃが、まずは変数の宣言からじゃ。
といっても難しいことはない。ほれ、この通り。
-------------------------
Dim 変数名 As クラス名
例:
Dim s1 As Sisyo
-------------------------
どこからでも使えるパブリック変数にする場合には、DimをPublicに変えればよい。さて、そしてインスタンス化じゃ。
---------------------------
変数名 = New クラス名(~)
例:
s1 = new Sisyo()
---------------------------
なるほど。Newをつけた上で変数に代入してやればいいんですね。
うむ、そのとおりじゃ。それほど難しくはなかろう。では次は継承についてやっていくとするぞ!
【 継承 】
さて、次は継承についてじゃ。Javaでは継承のさいには、extendsをつけて宣言しておったな。
はい。
VB.NETも、それと似たようなものじゃ。このように、Class文の下にInheritsをつけて宣言する。
---------------------------
Class Deshi
Inherits Sisyo
~
End Class
---------------------------
なるほど。そういえば継承と聞いて、オーバーライドやオーバーロードのことを思い出したのですが、VB.NETでもそれらは可能なのでしょうか?
うむ。可能じゃぞ。まずはオーバーライドからじゃ。まず、オーバーライドするにあたっては、元となるクラス(これを基底クラスと呼ぶぞ)の該当するメソッド・関数をOverridableで宣言する必要がある。
---------------------------
Class ●●●
Public Overridable Sub ▲▲▲←これでこのメソッドはオーバーライドできるようになる
~
End Sub
End Class
---------------------------
Class ●●●
Public Overridable Sub ▲▲▲←これでこのメソッドはオーバーライドできるようになる
~
End Sub
End Class
---------------------------
このように宣言したメソッド・関数は、作られたクラス(これを派生クラスという)側で、Overridesをつけて宣言することで、オーバーライドすることができるようになる。
---------------------------
Class XXX
Inherits ●●●
Public Overrides Sub ▲▲▲←オーバーライドしたメソッド
~
End Sub
End Class
---------------------------
なるほど。基底クラスの内容を実行させるにはどうすれば?
うむ。その時は、MyBase.メソッド名を実行させればよい。なお、通常はOverridesをつけると、これが自動的に追加されるので、それほど意識する必要はないぞ。
---------------------------
Class XXX
Inherits ●●●
Public Overrides Sub ▲▲▲
MyBase.▲▲▲()←基底クラスの▲▲▲メソッドの内容を実行する
~
End Sub
End Class
---------------------------
さて、次はオーバーロードじゃ。こちらも難しいことはない。
そのメソッドや関数を、Overloadsをつけて宣言するだけじゃ。
---------------------------
Class AAA
Public Overloads Sub BBB(kin As Integer)←オーバーロードしたメソッド1
~
End Sub
Public Overloads Sub BBB(kin As Integer, zei As Integer)←オーバーロードしたメソッド2
~
End Sub
End Class
---------------------------
なるほど!
うむ。さて、基本編はこれでおしまいじゃ。次回からはさらに発展して、ウィンドウアプリの作成からやっていくとするぞ!
これまでの復習と、これからすることの予習を忘れてはならぬ!
※次の更新は、『レトロゲーレビュー』の予定です。お楽しみに!