2010年1月20日水曜日

Base Class(基本クラス)定義しDerivedClass(派生クラス)でBase Class(基本クラス)のメンバーをnewキーワードを使用して隠蔽し、Derived Class(派生クラス)をインスタンス化して実際に隠蔽されているかを確認したり、thisキーワード,baseキーワードを使用して基本クラスのフィールドの値、隠蔽したあとのフィールドの値にそれぞれアクセスしてみる。

using System;


// 基本クラス
class BaseClass
{
    public int n = 1;
    public string s = "BaseClass";


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


// 派生クラス
class DerivedClass : BaseClass
{
    // 隠蔽
    new public int n = 2;
    new public string s = "DerivedClass";


    new public void printOut()
    {
        Console.WriteLine("DerivedClass");
    }


    /* 基本クラス、派生クラスのフィールド
     * の値にアクセス */
    public void printOut1()
    {
        Console.WriteLine
            ("{0}:{1}¥n{2}:{3}",
            base.n, base.s, this.n, this.s);
    }
}


class MainClass
{
    static void Main()
    {
        /* DerivedClass(派生クラス)を
         * インスタンス化 */
        DerivedClass sample 
            = new DerivedClass();


        /* BaseClass(基本クラス)が
         * 隠蔽されていることを確認 */
        Console.WriteLine
            ("{0}:{1}", sample.n, sample.s);
        sample.printOut();


        /* 基本クラス、派生クラスのフィールド
         * の値にアクセス */
        sample.printOut1();
    }
}

0 コメント:

コメントを投稿