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

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

確認環境
・Microsoft Visual Studio Community 2019

目次

クラスとは

class クラス名 {
    フィールド
    メソッド
    プロパティ
}

クラスのサンプル

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

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

    Public Property p1() As String
        Get
            Return _moji + _name
        End Get
        Set(ByVal value As String)
            _name = value
        End Set
    End Property
End Class

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

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

5~12行目は、プロパティです。publicのためクラスの外部からアクセスすることができます。
7行目のreturnは、値を返します。返される値を返り値または戻り値と呼びます。
9行目のvalueは、引数です。3行目の変数_nameに値を渡します。

クラスからオブジェクト(インスタンス)を生成する

new演算子を使用してオブジェクト(インスタンス)を生成します。インスタンス化といいます。

Dim c1 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.p1 = "赤"
        c2.p1 = "黄"
        c3.p1 = "青"

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

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

7~9行目は、プロパティのSetでインスタンスに値をセットしています。
ポイントは、インスタンスごとに保持するデータが異なる点です。
11~13行目は、プロパティのGetでインスタンスの値を表示しています。

他言語の静的メソッド/静的変数にあたるサンプル

VB.NETには、Javaなどにあるstatic修飾子がありませんが、オブジェクトを生成せずに使用できる似た仕組みがあります。

1.Moduleを使用する

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

2.Public Shared を使用する

Public 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行目にメソッドがあります。ちなみにFunctionは戻り値がある場合につけます。
戻り値がない場合はPublic Shared Subにします。
11行目は、newでオブジェクトを生成していませんがClass1クラスのメソッドを実行できます。

関連の記事

△上に戻る