2010年1月21日木曜日

アクセス修飾子のprivate,protected,publicを使用してBaseClass(基本クラス)のメンバーを定義し、それぞれDerivedClass(派生クラス)、MainClassからBaseClass(基本クラス)のどのメンバーにアクセス出来るか確認したり、BaseClass(基本クラス)にpublic Methodを定義しておいて、他のClassからもprivateのメンバーにアクセス出来るようにしたりしてみる。

using System;


class BaseClass
{
    // 既定のprivate
    int n = 1;
    protected int m = 2;
    public int l = 3;


    public virtual void printOut()
    {
        Console.WriteLine
            ("{0}:{1}:{2}", n, m, l);
    }


    /* privateのnフィールドにアクセスできる
     * ようにメソッドを用意しておく */
    public void setN(int n)
    {
        this.n = n;
    }
}


// 派生クラス
class DerivedClass : BaseClass
{
    public override void printOut()
    {
        /* privateなのでアクセスできない
         * this.n=4 */
        // protectedなのでアクセスできる
        this.m = 5;


        // 基本クラスのprintOut()を呼び出す
        base.printOut();
    }
}


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


        // privvateのnに4を代入するメソッド
        sample.setN(4);


        // lはpublicなのでアクセスできる
        sample.l = 6;


        // 出力値;4:5:6
        sample.printOut();
    }
}

0 コメント:

コメントを投稿