VB.NET入門 クラスの仕組みとサンプル

VB.NETのクラスの仕組みとサンプルです。

目次

クラスの仕組み クラスの概要
クラスからオブジェクト(インスタンス)を生成する例
  オブジェクトを生成しない例(Shared修飾子)
オブジェクトを生成しない例(モジュール)

クラスの概要

class クラス名 {
    フィールド
    メソッド
}

クラスのサンプルです。

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モジュールのメソッドを実行できます。

関連の記事

VB.NET クラスの継承の仕組みとサンプル
VB.NET コンストラクタのサンプル

△上に戻る