2010年2月12日金曜日

基本クラスに保護レベルがprivateのstring型のデータとset keywordの保護レベルがprotected, get keywordの保護レベルがpublicのプロパティを定義して派生クラスからのみstring型のデータを設定出来るようにし、そしてそのクラスを継承した派生クラスを定義してこのClassでstring型のデータを設定(書き換え)するパラメータ付きのMethodを定義し、その派生クラスをインスタンス化してstring型のデータをBaseClassで定義したデータとし表示してから派生クラスのMethodを使用してstring型のデータを書き換えてから表示し、実際にデータが変更されていることを確認してみる。

using System;

class BaseClass
{
    // 保護レベルは既定のprivate
    string s = "BaseClass";

    // setの保護レベルをprotectedに設定
    public string S
    {
        protected set { this.s = value; }
        get { return this.s; }
    }
}

class DerivedClass : BaseClass
{
    public void set(string s)
    {
        // 派生クラスからならアクセス可能
        this.S = s;
    }
}

class MainClass
{
    static void Main()
    {
        DerivedClass sample = new DerivedClass();
        /* setはprotectedなので派生クラス以外からは
         * アクセスできない
        sample.S = "MainClass"; */

        // 出力値:BaseClass
        Console.WriteLine(sample.S);

        // 派生クラスのMethodを使用してsの値を設定
        sample.set("DerivedClass");
        // 出力値:DerivedClass
        Console.WriteLine(sample.S);
    }
}

0 コメント:

コメントを投稿