仮想メゾッド、抽象メソッド、クラス

■仮想メソッド

 ・実装を持つが、子クラスでOverride可能なメソッド。

  Public Overridable Sub TestMethod()
    Console.WriteLine("仮想メソッド")
  End Sub
  Public Overridable Property TestProperty As String = "仮想property"

■抽象メソッド

 ・実装を持たない、子クラスでOverrideが必須なメソッド

  Public MustOverride Sub TestMethod()
  Public MustOverride Property PropertyA As String

(*)抽象メソッドは、抽象クラス内に定義しなければならない。

(*)仮想メソッドも抽象メソッドも、Shared、PrivateはNG!

■抽象クラス

 ・抽象メソッドをもつクラス。

 ・実装のあるメソッドも持つことができる。

Public MustInherit Class TestClass
  ' 抽象メンバ:MustOverride修飾子を付ける
  Public MustOverride Sub TestMethod()
  Friend MustOverride Property TestProperty As String

  ' 実装のあるメソッドも持てる
  Public Sub TestMethod()
    Console.WriteLine("実装のあるメソッド")
  End Sub
End Class