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~5行目は親クラスで、7~12行目は子クラスです。
2行目は、Overridableキーワードが入っています。
9行目がオーバーライドです。Overridesキーワードが入っています。
2行目とメソッド名が同じで引数も同じ(なし)です。

16行目は、子クラスのインスタンスを生成しています。
17行目は、子クラス「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

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

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

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

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

Public Class Class2
	Inherits Class1
	Public Overrides Function print1()
		Return MyBase.print1() + "表示2"
	End Function
End Class

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

9行目は、2行目のメソッドをオーバーライドしています。
10行目は、MyBaseキーワードを使用して親クラスのメソッドを実行しています。
18行目は、子クラスのメソッドの実行結果が表示されます。

目次

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

△上に戻る