佐々木屋

技術的なことから趣味まで色々書きます

抽象クラスと抽象メソッド

クラスを継承した時に仮想メソッドであれば派生先でオーバーライドできることは説明しました。この時、派生先で最初からオーバーライドありきで設計されたメソッドを抽象メソッドと呼びます。抽象メソッドは定義のみを記述し、詳細内容は派生クラスで記述します。そして、抽象メソッドを含むクラスのことを抽象クラスと言います。

また、抽象クラスはインスタンス作成が出来ず、継承された派生クラスでは抽象メソッドを必ずオーバーライドしなければならない制約があります。

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



抽象クラスは、
 ・基底クラスはインスタンス化させたくない(既定実装が無い)
 ・派生クラスが複数ある前提
 ・派生先で処理をオーバーライドさせる必要がある
 ・抽象メンバ以外のメンバも持たせる

これらを満たす場合は非常に有効です。