2010年1月3日日曜日

set,getキーワード、protectedキーワードを使用して、Classの外部からもprivateのアクセスレベルで宣言されたのフィード値の設定や取得をできるようにしてみる。

using System;


class BaseClass
{
    int num1 = 1;
    string s = "BaseClass";
    int num2=2;
    int num3=3;
    public void printOut()
    {
        Console.WriteLine
            ("{0} {1} {2} {3}",
            num1, s, num2, num3);
    }
    public int Num1
    {
        set{this.num1=value;}
        get{return this.num1;}
    }
    // 自動プロパティ
    public string S{get;set;}
    // プロパティに個別のアクセス設定(set)
    public int Num2
    {
        protected set { this.num2 = value; }
        get { return this.num2; }
    }
    // プロパティに個別のアクセス設定(get)
    public int Num3
    {
        set{this.num3=value;}
        protected get { return this.num3; }
    }
}


class DerivedClass : BaseClass
{
    public DerivedClass()
    {
        Num1 = 11;
        S = "DerivedClass";
        Num2 = 12;
        Num3 = 13;
        Console.WriteLine
            ("{0} {1} {2} {3}"
            Num1, S, Num2, Num3);
    }
}


class MainClass
{
    static void Main()
    {
        var b = new BaseClass();
        // 出力値:1 BaseClass 2 3
        b.printOut();
        var drv = new DerivedClass();


        drv.Num1 = 101;
        drv.S = "MainClass";
        /* Num2のsetはprotectedなので
         * アクセスできない
        drv.Num2=102; */
        drv.Num3 = 103;
        // 出力値:101 DerivedClass 12
        Console.WriteLine
            ("{0} {1} {2}",
            drv.Num1, drv.S, drv.Num2);
        /* Num3のgetはprotectedなのでアクセス
         * できない
        Console.WriteLine(drv.Num3);*/
    }
}

0 コメント:

コメントを投稿