そのまま使えない、必ず子クラスを作って追加実装をしなければいけない「抽象クラス(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 件のコメント:
コメントを投稿