VB.NET オーバーライドのサンプル

VB.NETのオーバーライドのサンプルです。

目次

説明 オーバーライド
サンプル オーバーライドのサンプル
  overrideのメソッドをさらにオーバーライドする
  子クラスから親クラスを参照する(MyBase)

オーバーライド

  • クラスを継承するときに使用します。
  • 子クラスのメソッドで実行する内容を上書きします。
  • 親クラスのメソッドにOverridableキーワードをつけます。
  • 子クラスのメソッドにOverridesキーワードをつけます。
  • 似た名前として、オーバーロードがありますがそれとは別です。オーバーロードと継承は関係ありません。
  • 以下は、Microsoftのオーバーライドのリンクです。
    https://docs.microsoft.com/ja-jp/visualstudio/ide/reference/generate-override?view=vs-2019

オーバーライドのサンプル

オーバーライドのサンプルです。

Public Class Class1

    Public Overridable Function print1()
        Return "表示1"
    End Function

End Class
Public Class Class2
    Inherits Class1

    Public Overrides Function print1()
        Return "表示2"
    End Function

End Class
Module Module1
    Sub Main()
        Dim c2 As New Class2
        Console.WriteLine(c2.print1()) '表示2と出力される
    End Sub
End Module

1~7行目は親クラスです。
8~15行目は子クラスです。
3行目は、Overridableキーワードが入っています。
11行目は、Overridesキーワードが入っています。
11行目がオーバーライドです。3行目とメソッド名が同じで引数も同じ(なし)です。

18行目は、子クラスのインスタンスを生成しています。
19行目は、子クラス「Class2」のprint1メソッドが実行されます。

overrideのメソッドをさらにオーバーライドする

overrideキーワードのメソッドをさらにオーバーライドするサンプルです。

Public Class Class1

    Public Overridable Function print1()
        Return "表示1"
    End Function

End Class
Public Class Class2
    Inherits Class1

    Public Overrides Function print1()
        Return "表示2"
    End Function

End Class
Public Class Class3
    Inherits Class2

    Public Overrides Function print1()
        Return "表示3"
    End Function

End Class
Module Module1
    Sub Main()
        Dim c3 As New Class3
        Console.WriteLine(c3.print1()) '表示3と出力される
    End Sub
End Module

19行目は、11行目のOverridesキーワードのメソッドをオーバーライドしています。
この場合、19行目もOverridesキーワードを指定します。
27行目は、19行目のメソッドが実行されます。

子クラスから親クラスを参照する(MyBase)

子クラスから親クラスを参照するサンプルです。
MyBaseキーワードを使用してオーバーライドした子クラスのメソッドから親クラスのメソッドを呼びます。

Public Class Class1

    Public Overridable Function print1()
        Return "表示1"
    End Function

End Class
Public Class Class2
    Inherits Class1

    Public Overrides Function print1()
        Console.WriteLine(MyBase.print1()) '表示1と出力される
        Return "表示2"
    End Function

End Class
Module Module1
    Sub Main()
        Dim c2 As New Class2
        Console.WriteLine(c2.print1()) '表示2と出力される
    End Sub
End Module

11行目は、3行目のメソッドをオーバーライドしています。
12行目は、MyBaseキーワードを使用して親クラスのメソッドを呼びその実行結果が表示されます。
20行目は、子クラスのメソッドの実行結果が表示されます。

目次

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

△上に戻る