VB.NETをつつく18-多態性1-メソッドオーバーライド。親子でも違う事はある。
Public MustInherit Class Animal
Private m_name As String
Public Property Name() As String
Get
Return m_name
End Get
Set(ByVal value As String)
Me.m_name = value
End Set
End Property
Private m_age As Integer
Public Property Age() As Integer
Get
Return Me.m_age
End Get
Set(ByVal value As Integer)
If value > 0 Then
Me.m_age = value
End If
End Set
End Property
Public Sub New(ByVal name As String, ByVal age As Integer)
Me.Name = name
Me.Age = age
End Sub
//ここを修正
Public Overridable Sub Talk()
Console.WriteLine("ワタシハ{0}。年は{1}だよ。", _
Me.Name, Me.Age)
End Sub
Public MustOverride Sub Move()
End Class
Public Class Human
Inherits Animal
Public Sub New(ByVal name As String, ByVal age As Integer)
MyBase.New(name, age)
End Sub
//これがメソッドオーバーライド
Public Overrides Sub Talk()
Console.WriteLine("私は{0}。年は20だよ。", Me.Name)
End Sub
Public Overrides Sub Move()
Console.WriteLine("テクテクテクテク")
End Sub
End Class
このコードを実行してみよう。これでHumanクラスは実年齢に関係なく二十歳を名乗ることになるよ。
ドリィちゃんそこまでするか・・・おっほん。それはともかく、このようにして基本となるクラスのメソッドにOverridable キーワードを付け加えることにより派生クラス(継承したクラスの事)が メソッドの定義を書き換えることが出来るよ。 これがメソッドオーバーライド機能ピヨ。 この機能は便利だから多用するよ。だからしっかり覚えよう。 それで、どのような時Overridableキーワードをつければいいかなんだけど、基本的には同じ動きなんだけど、 たまに動きを変えたい場合に使用するといいピヨ。 もしそのメソッドが派生クラスごとに動きが違う場合はMustOverrideキーワードの方がいいピヨ。上手に使い分けてね。 メソッドオーバーライドについてはこれで終わりピヨ。 でもオブジェクト指向についてつっつくことはまだあるんで、次回からは今まで紹介できなかった細かな所をつっつくピヨ。 覚えたら覚える程得をするので、身構えずにリラックスして楽しんでね。