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

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

目次

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

クラスの概要

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

クラスのサンプル

クラスのサンプルです。
1~13行目までがClass1というクラスです。

Public Class Class1
    Private _moji As String = "色は" '変数
    Private _name As String  '変数

    Function getName()  'メソッド
        Return _moji + _name
    End Function

    Sub setName(a As String)  'メソッド
        _name = a
    End Sub
End Class

1行目は、Class1というクラス名です。最初の文字を大文字にします。Pascal記法といいます。

2行目は、クラスの内部で宣言されている変数です。フィールドまたはメンバー変数とも呼びます。
privateのためクラスの外部からアクセスすることができません。

5~7,9~11行目は、メソッドです。Functionプロシージャとも呼びます。
6行目のreturnは、値を返します。返される値を返り値または戻り値と呼びます。
5行目のFunctionは値を返すときに使用します。
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

コード

クラスからオブジェクトを生成して利用するサンプルです。
上記「クラスのサンプル」のClass1クラスからオブジェクトを生成します。

Module Module1
    Sub Main()
        Dim c1 As New Class1
        Dim c2 As New Class1
        Dim c3 As New Class1

        c1.setName("赤")
        c2.setName("黄")
        c3.setName("青")

        Console.WriteLine(c1.getName()) '色は赤
        Console.WriteLine(c2.getName()) '色は黄
        Console.WriteLine(c3.getName()) '色は青
    End Sub
End Module

3~5行目は、上記のClass1クラスのインスタンスを3つ生成しています。
c1は変数です。

7~9行目は、メソッドでインスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です。
11~13行目は、メソッドを使用してインスタンスの値を表示しています。

オブジェクトを生成しない例(Shared修飾子)

クラスのオブジェクトを生成しないやり方もあります。
Shared修飾子を指定します。

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

3行目は、メソッドにShared修飾子が指定していあります。
11行目は、newでオブジェクトを生成していませんがClass1クラスのメソッドを実行できます。

このメソッドは、クラスメソッドや静的メソッドと呼ばれます。
変数の場合はクラス変数や静的変数と呼ばれます。

オブジェクトを生成しない例(モジュール)

Moduleを使用するサンプルです。

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~7行目は、test1というモジュールです。
2行目に変数、4行目にメソッドがあります。

10行目は、newでオブジェクトを生成していませんがtest1モジュールの変数を参照できます。
11行目もnewでオブジェクトを生成していませんがtest1モジュールのメソッドを実行できます。

関連の記事

VB.NET メソッドのサンプル(値渡し/参照渡し他)
VB.NET クラスの継承の仕組みとサンプル
VB.NET コンストラクタのサンプル

△上に戻る