無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

VB.NETをつつく18−多態性1−メソッドオーバーライド。親子でも違う事はある。

引き続き多態性を実現するVB.NETの機能をつっついていこう。 多態性と一言でいっても前回のようにメソッドを子クラスに追加させるだけではないんだ。 他にもメソッドオーバーライドという機能があるんだ。 論よりプログラミング。早速サンプルをみよう。

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キーワードの方がいいピヨ。上手に使い分けてね。 メソッドオーバーライドについてはこれで終わりピヨ。 でもオブジェクト指向についてつっつくことはまだあるんで、次回からは今まで紹介できなかった細かな所をつっつくピヨ。 覚えたら覚える程得をするので、身構えずにリラックスして楽しんでね。
別窓 | VB.NET | コメント:0 | トラックバック:0 | ∧top | under∨
<<C++/CLIをつつく18−多態性1−メソッドオーバーライド。親子でも違う事はある。 | 無差別に技術をついばむ鳥 | C#をつつく18−多態性1−メソッドオーバーライド。親子でも違うものはある。>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |