
今回はオーバーライドについて紹介していきます。
オーバーライドとは、クラスを継承する時に使用するもので、
継承元クラス(親クラス、スーパークラス)のメソッドを上書きすることです。
といってもわかりにくいと思うので早速、使い方を見ていきましょう。
オーバーライドの使い方
オーバーライドを使用するには、継承元クラスにOverrideable、継承先クラスにOverridesを記載しましょう。
Public Class 継承元クラス名
Public Overridable Sub メソッド名
End Sub
End Class
Public Class 継承先クラス名
Inherits 親クラス
Public Overrides Sub メソッド名
End Sub
End Class
このような記載をすることで親クラスのメソッドを改造して使うことができます。
実際の例を見ていきましょう。
まず、継承元クラスとして、足し算をするクラスを作成しましょう。
そして、継承先クラスとして、足し算の結果に +1 をする機能を作成しました。
''' <summary>
''' 継承元クラス(親クラス、スーパークラス)
''' </summary>
Public Class ClsTashizan
Public Property a As Integer
Public Property b As Integer
Public Overridable Function sum() As Integer
Dim result As Integer
result = a + b
Return result
End Function
End Class
''' <summary>
''' 継承先クラス(子クラス、サブクラス)
''' </summary>
Public Class ClsTashizan2
Inherits ClsTashizan
Public Overrides Function sum() As Integer
Dim result As Integer = MyBase.sum() + 1
Return result
End Function
End Class
''' <summary>
''' フォーム
''' </summary>
Public Class frmOverride
Private Sub frmOverride_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'結果を格納する変数
Dim result_tashi As Integer
'変数初期化
Dim x As Integer = 10
Dim y As Integer = 5
'クラス宣言
Dim clstashi2 As New ClsTashizan2
'値設定
clstashi2.a = x
clstashi2.b = y
'メソッド呼び出し
result_tashi = clstashi2.sum()
'結果出力
Console.WriteLine(result_tashi)
End Sub
End Class
結果
16
解説
1行目~17行目:親クラスを作成
8行目:sum()というメソッドを継承先クラスで上書きできるように、Overridableを記載している。
19行目~33行目:子クラスを作成
25行目:sum()メソッドを上書きするために、Overridesを記載する。
27行目:MyBaseは継承元のクラスのことなので、MyBase.sum()で継承元クラスのsum()の結果を取得できる。その結果に +1 を行っている。
35行目~62行目:作成したクラスを呼び出す処理
10と5を足した値に +1 をした16が出力されました。
オーバライドによる継承元の関数の上書きができていることを確認できましたね。
まとめ
オーバライドとは、クラスを継承する時に、継承元クラスの関数を上書きすることです。
同じような名前で、オーバーロードとういうものがありますが、全くの別物ですので、注意してください。