2011年9月16日金曜日

→→→メソッドのオーバーライド

メソッドのオーバーライド(override)という機能。簡単に言えば子クラスで親クラスのメソッドを「上書き」する機能。

Module Module1
  Sub Main()
    Dim c As New Class2()
    c.Output()
  End Sub
End Module


Class Class1
   Protected S As String = "こんにちは"
   Public Overridable Sub Output()
     Console.WriteLine(S)
   End Sub
End Class


Class Class2
   Inherits Class1


   Public Overrides Sub Output()
     Console.Write(S)
     Console.WriteLine(S)
   End Sub
End Class

Class2のインスタンスcを作り、そのOutputメソッドを呼び出す。Class2クラスのOutputメソッドが呼び出される。ここでは「こんにちは こんにちは」と表示される
Class2の親であるClass1にもOutputメソッドがあるがOverridableと書いてオーバーライドを許可している。Class2クラスではOverridesと書いてオーバーライドすることを示している。
Class2の外部からClass1のOutputを呼び出すことはできない。
でも、Class2の内部からであれば、
MyBase.Output()
と記述することによって、親クラスのOutputメソッドを呼び出せる。

0 件のコメント:

コメントを投稿