VB.NET コンストラクタのサンプル

VB.NETのコンストラクタのサンプルです。

目次

コンストラクタ

class クラス名
  Sub New(引数)
    処理
  End Sub
End Class
  • コンストラクタは、new演算子でクラスをインスタンス化する時に呼ばれます。
  • クラスの初期値を設定するときなどに使用されます。
  • 戻り値はないので、戻り値の記述はしません。
  • コンストラクタをオーバーロードすることもできます。

コード

コンストラクタのサンプルです。

Public Class Class1
    Sub New(a As String)
        Nametest = a
    End Sub

    Public ReadOnly Property Nametest() As String
End Class

Module Module1
    Sub Main()
        Dim c1 As New Class1("りんご")
        Console.WriteLine(c1.Nametest) 'りんご
    End Sub
End Module

2~4行目がコンストラクタです。
11行目のクラスがnew演算子でインスタンス化されると、2行目が呼ばれ、6行目のプロパティに値がセットされます。
12行目は、セットされた値を確認しています。

コンストラクタのオーバーロード

コンストラクタのオーバーロードのサンプルです。

Public Class Class1
    Sub New(a As String)
        Nametest = a
    End Sub
    Sub New(a As Integer)
        Nametest = "ばなな"
    End Sub

    Public ReadOnly Property Nametest() As String
End Class

Module Module1
    Sub Main()
        Dim c1 As New Class1(1)
        Console.WriteLine(c1.Nametest) 'ばなな
    End Sub
End Module

2,5行目がオーバーロードです。引数が異なるものです。
2行目は、インスタンス化する時にString型の引数が1つのときに実行されます。
5行目は、インスタンス化する時にInteger型の引数が1つのときに実行されます。
14行目は、Integer型の引数が渡されるので5行目が実行されます。

別のコンストラクタを指定する(MyClass)

別のコンストラクタを指定するサンプルです。MyClassを使用します。

Public Class Class1
    Sub New(a As String)
        Nametest = a
    End Sub
    Sub New(a As Integer)
        MyClass.New("みかん")
    End Sub

    Public ReadOnly Property Nametest() As String
End Class

Module Module1
    Sub Main()
        Dim c1 As New Class1(1)
        Console.WriteLine(c1.Nametest) 'みかん
    End Sub
End Module

2,5行目は、オーバーロードです。引数が異なるものです。
6行目のMyClassは、2行目のコンストラクタを指します。String型の引数が1つで一致するので2行目のコンストラクタが実行されます。

親クラスのコンストラクタを指定する(MyBase)

親クラスのコンストラクタを指定するサンプルです。MyBaseを使用します。

'親クラス
Public Class Class1
    Sub New(a As String)
        Nametest = a
    End Sub

    Public ReadOnly Property Nametest() As String
End Class
'子クラス
Public Class Class2
    Inherits Class1
    Sub New(a As String)
        MyBase.New(a)
    End Sub
End Class
Module Module1
    Sub Main()
        Dim c2 As New Class2("りんご")
        Console.WriteLine(c2.Nametest) 'りんご
    End Sub
End Module

13行目の:baseは、親クラス(Class1クラス)の3行目のコンストラクタを実行します。

以下は、MicrosoftのMe、My、MyBase、MyClassのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/program-structure/me-my-mybase-and-myclass

関連の記事

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

△上に戻る