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 コンストラクタのサンプル