< 継承を禁止する | プロパティ >

July 17, 2008

抽象クラス

クラス自体を abstract 宣言した場合は、実体を作れないだけ
abstract class Base
{
    public void Hello () {}
}

class Inherit : Base
{
    new public void Hello () {}
    
    static void Main ()
    {
        Inherit iObj = new Inherit ();
//        Base bObj = new Base ();    この行はコンパイルできない
        Base bObj = iObj;
        iObj.Hello ();  // Inherit のメソッドが実行される
        bObj.Hello ();  // Base のメソッドが実行される
    }
}
メソッドを abstract 宣言した場合は内容を定義できない。派生側でオーバーライドする必要がある。
abstract class Base
{
    public abstract void Hello (); // 実体はない
}

class Inherit : Base
{
    public override void Hello () {}
    
    static void Main ()
    {
        Inherit iObj = new Inherit ();
//        Base bObj = new Base ();    この行はコンパイルできない
        Base bObj = iObj;
        iObj.Hello ();  // Inherit のメソッドが実行される
        bObj.Hello ();  // Inherit のメソッドが実行される
    }
}

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/2132

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?