2009年12月22日火曜日

アクセス修飾子private,protected,publicを使用して基本クラスのメンバにアクセスできるレベルを設定し、他のクラスから基本クラスのメンバにアクセスしてみる。

using System;


class BaseClass
{
    // 既定値のprivate
    int a = 0;
    protected int b = 1;
    public int c = 2;


    public void setNum(int a)
    {
        /* 同じクラス内なので
         * aにアクセス可能 */
        this.a = a;
    }


    public virtual void printOut()
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
        Console.WriteLine(c);
    }
}


class DerivedClass : BaseClass
{
    public override void printOut()
    {
        /* privateなのでaにはアクセス
         * できない */
        // this.a = 1;
        /* protectedなので派生クラスからも
         * アクセス可能 */
        this.b = 2;
        // publicなのでアクセス可能 
        this.c = c;
        /* 基本クラスのメソッドを
         * 呼び出す */
        base.printOut();
    }
}


class MainClass
{
    static void Main()
    {
        DerivedClass drv = new DerivedClass();
        drv.setNum(1);
        /* bはprotectedなのでMainClassからは
         * アクセスできない */
        // drv.b=1;
        // 出力値:1 2 2
        drv.printOut();
        // cはpublicなのでアクセス可能
        drv.c = 1;
        // 出力値:1 2 1
        drv.printOut();
    }
}

0 コメント:

コメントを投稿