2010年2月14日日曜日

virtual keywordを使用してDerived ClassでoverrideできるようにしたMethodをもつBase Classを定義してそのClassのDerived Classを複数作成し、その際それぞれBaseClassのMethodをoverride keywordを使用して書き換え、Base Class型の変数を宣言してそれにそれぞれのDerived ClassのインスタンスをUpcastして代入し、実際にどのClassのMethodが呼び出されるかを確認してみる。

using System;

class BaseClass
{
    public virtual void printOut()
    {
        Console.WriteLine("BaseClass");
    }
}

class DerivedClass1 : BaseClass
{
    public override void printOut()
    {
        Console.WriteLine("DerivedClass1");
    }
}

class DerivedClass2 : BaseClass
{
    public override void printOut()
    {
        Console.WriteLine("DerivedClass2");
    }
}

class MainClass
{
    static void Main()
    {
        // BaseClass型の変数を宣言
        BaseClass sample;

        // それぞれどのClassのMethodが呼ばれるかを確認

        sample = new BaseClass();
        // 出力値:BaseClass
        sample.printOut();

        // DerivedClass1のインスタンスをUpcast
        sample = new DerivedClass1();
        // 出力値:DerivedClass1
        sample.printOut();

        // DerivedClass2のインスタンスをUpcast
        sample = new DerivedClass2();
        // 出力値:DerivedClass2
        sample.printOut();
    }
}

0 コメント:

コメントを投稿