2010年2月11日木曜日

アクセス修飾子がprivate、protectedのデータメンバーとprivateのデータメンバーにアクセスできるようにしたMethod(アクセサ)とvirtual keywordを使用してoverrideできるようにしたMethodを持つClassを定義し、そしてそのClassを継承してoverride keywordを使用してMethodをoverrideし、その際アクセス修飾子がprotectedのデータメンバーを書き換えさらにMethod内でbase keywordを使用してoverrideする前の基本クラスのMethodを呼び出すように派生クラスを定義し、その派生クラスをインスタンス化してアクセサを利用してでアクセス修飾子がprotectedのデータメンバーの値を書き換えてからoverrideしたMethodを使用してアクセス修飾子がprivate、protectedのデータメンバー(string型)の値をそれぞれ確認してみる。

using System;

class BaseClass
{
    string s1 = "Sample";
    protected string s2 = "Sample";

    // privateのs1に値を代入アクセサ
    public void stringS1(string s1)
    {
        this.s1 = s1;
    }

    public virtual void printOut()
    {
        Console.WriteLine(s1);
        Console.WriteLine(s2);
    }
}

class DerivedClass : BaseClass
{
    public override void printOut()
    {
        this.s2 = "Protected";
        base.printOut();
    }
}

class MainClas
{
    static void Main()
    {
        DerivedClass sample = new DerivedClass();
        // アクセサを使用してprivateのs1に値を代入
        sample.stringS1("Private");
        /* 出力値
         * Private
         * Protected */
        sample.printOut();
    }
}

0 コメント:

コメントを投稿