抽象クラスと抽象メソッド
クラスを継承した時に仮想メソッドであれば派生先でオーバーライドできることは説明しました。この時、派生先で最初からオーバーライドありきで設計されたメソッドを抽象メソッドと呼びます。抽象メソッドは定義のみを記述し、詳細内容は派生クラスで記述します。そして、抽象メソッドを含むクラスのことを抽象クラスと言います。
また、抽象クラスはインスタンス作成が出来ず、継承された派生クラスでは抽象メソッドを必ずオーバーライドしなければならない制約があります。
C#はabstractキーワードを使用します。
public abstract class TClass { public abstract void Method1(); } public class Class5 : TClass { public override void Method1() { //処理内容 } }
VB.NETはMustInheritキーワードをクラス名につけ、MustOverrideをキーワードをメソッド名につけます。
Public MustInherit Class TClass Public MustOverride Sub Method1() End Class Public Class Class5 Inherits TClass Public Overrides Sub Method1() '処理内容 End Sub End Class
抽象クラスは、
・基底クラスはインスタンス化させたくない(既定実装が無い)
・派生クラスが複数ある前提
・派生先で処理をオーバーライドさせる必要がある
・抽象メンバ以外のメンバも持たせる
これらを満たす場合は非常に有効です。