2011年9月16日金曜日

→→→そのまま使えない「抽象クラス」

そのまま使えない、必ず子クラスを作って追加実装をしなければいけない「抽象クラス(abstract class)」というものがある。
Module Module1
  Sub Main()
    Dim c As New Class2()
    c.Output()
  End Sub
End Module


MustInherit Class Class1
    Protected S As String = "こんにちは"
    Public MustOverride Sub  Output()
End Class


Class Class2
    Inherits Class1
    Public Overrides Sub Output()
         Console.WriteLine(S)
    End Sub
End Class


Class1クラスは抽象クラス。MustInherit(継承しなければいけない)と記述しているし、OutputメソッドはMustOverride(オーバーライドしなければいけない)と書かれた抽象メソッドで、中身の記述がない。
Class2クラスではOutputメソッドをオーバーライドして処理を記述している。Class1ではOutputメソッドの外側を記述し、Class2で内側を記述しているようなもの。
Class2の段階まで持っていけばインスタンス化して利用できる。
Class1は直接はインスタンス化して利用できない。Class2をClass1に書き換えるとエラー。

抽象クラスは「何をするか」の大枠だけを決めておいて「どのようにするか」を子クラスにまかせる仕組み

0 件のコメント:

コメントを投稿