VB.NETのクラスの仕組みとサンプルです。
目次
クラスの仕組み | クラスの概要 |
クラスからオブジェクト(インスタンス)を生成する例 | |
オブジェクトを生成しない例(Shared修飾子) | |
オブジェクトを生成しない例(モジュール) |
クラスの概要
class クラス名 { フィールド メソッド } |
- クラスは、フィールドとメソッドを定義できます。
- フィールドはデータで、メソッドは処理です。
- クラスは設計図や型枠のイメージです。クラスからオブジェクト(実体)を生成して利用します。
※クラスからオブジェクトを生成しないで利用する場合もあります。 - 機能を他のクラスに継承させることができます。
- 以下は、MicrosoftのVBのクラスの定義のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/objects-and-classes/walkthrough-defining-classes
クラスのサンプルです。
Public Class Animal
Private _name As String '変数
Function walk() 'メソッド
Dim _str As String = "が歩く" '変数
Return _name + _str
End Function
Sub setName(name As String) 'メソッド
_name = name
End Sub
End Class
1~12行目までがAnimalというクラスです。
1行目のクラス名のAnimalは最初の文字を大文字にします。Pascal記法といいます。
2行目は、クラスの内部で宣言されている変数です。フィールドまたはメンバー変数とも呼びます。
privateのためクラスの外部からアクセスすることができません。
4,9行目は、メソッドです。
4行目のFunctionは値を返すときに使用します。
6行目のreturnは、値を返します。返される値を返り値または戻り値と呼びます。
9行目のSubは値を返さないときに使用します。
クラスからオブジェクト(インスタンス)を生成する例
new演算子を使用してオブジェクト(インスタンス)を生成します。インスタンス化といいます。
Dim 変数 As New クラス名 |
上記の図はクラスからオブジェクト(インスタンス)を3つ生成したときのイメージです。
オブジェクトごとにデータを管理できます。
例えると、クラスは設計図や型枠で、インスタンスは実体です。
以下は、MicrosoftのVBのオブジェクトとクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/language-features/objects-and-classes/index
以下は、クラスからオブジェクトを生成して利用するサンプルです。
上記「クラスのサンプル」のAnimalクラスからオブジェクトを生成します。
Module Module1
Sub Main()
Dim a1 As New Animal
Dim a2 As New Animal
Dim a3 As New Animal
a1.setName("犬")
a2.setName("猫")
a3.setName("鳥")
Console.WriteLine(a1.walk()) ' 犬が歩く
Console.WriteLine(a2.walk()) ' 猫が歩く
Console.WriteLine(a3.walk()) ' 鳥が歩く
End Sub
End Module
3~5行目は、上記のAnimalクラスのインスタンスを3つ生成しています。
c1は変数です。
7~9行目は、メソッドでインスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です。
11~13行目は、メソッドを使用してインスタンスの値を表示しています。
オブジェクトを生成しない例(Shared修飾子)
Shared修飾子を使用するサンプルです。newでオブジェクトを生成しません。
Public Class Class1
Public Shared Function getName()
Return "test"
End Function
End Class
Module Module1
Sub Main()
Console.WriteLine(Class1.getName()) 'testと出力される
End Sub
End Module
2行目は、メソッドにShared修飾子が指定していあります。
9行目は、newでオブジェクトを生成していませんがClass1クラスのメソッドを実行できます。
このメソッドは、クラスメソッドや静的メソッドと呼ばれます。
変数の場合はクラス変数や静的変数と呼ばれます。
オブジェクトを生成しない例(モジュール)
Moduleを使用するサンプルです。newでオブジェクトを生成しません。
Module test1
Public CNT As Integer = 123
Public Sub print1()
Console.WriteLine(456)
End Sub
End Module
Module Module1
Sub Main()
Console.WriteLine(test1.CNT) '123と出力される
test1.print1() '456と出力される
End Sub
End Module
1~6行目は、test1というモジュールです。
2行目に変数、3行目にメソッドがあります。
10行目は、newでオブジェクトを生成していませんがtest1モジュールの変数を参照できます。
11行目もnewでオブジェクトを生成していませんがtest1モジュールのメソッドを実行できます。
関連の記事