2010年1月4日月曜日

BaseClass,DerivedClass1,DerivedClass2を定義して、それぞれアップキャストしたりダウンキャストしたりしてどの順番が型変換可能か確かめてみる。

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()
    {
        /* DerivedClass1をBaseClassに
         * アップキャスト */
        BaseClass b1 = new DerivedClass1();
        // b1をDerivedClass1に再びダウンキャスト
        b1 = (DerivedClass1)b1;
        /* 元がDerivedClass1なのでb1を
         * DerivedClassにダウンキャストしよう
         * とするとエラーになる
        b1 = (DerivedClass2)b1; */
    }
}

0 コメント:

コメントを投稿