2010年2月10日水曜日

基本クラスでアクセス修飾子がそれぞれprivate,protected,publicのデータメンバーを定義してその派生クラスを定義し、それぞれのアクセス修飾子のデータメンバーがどのクラスからアクセス出来るかを確認してみる。

using System;

// 基本クラス
class BaseClass
{
    string s1 = "private";
    protected string s2 = "protected";
    public string s3 = "public";

    public void printOut1()
    {
        Console.WriteLine("{0}¥n{1}¥n{2}",s1,s2,s3);
    }
}

// 派生クラス
class DerivedClass:BaseClass
{
    public void printOut2()
    {
        /* s1は既定のprivateなのでアクセス
         * できない
        Console.WriteLine(s1); */
        // s2はprotectedなのでアクセス可能
        Console.WriteLine(s2);
        // s3はpublicなのでアクセス可能
        Console.WriteLine(s3);
    }
}

class MainClass
{
    static void Main()
    {
        DerivedClass sample1 = new DerivedClass();
        /* 出力値
         * protected
         * public */
        sample1.printOut1();

        /* s3はpublicなのでアクセス可能
         * 出力値:public */
        Console.WriteLine(sample1.s3);

        // 基本クラスをインスタンス化
        BaseClass sample2 = new BaseClass();

        /* 出力値
         * private
         * protected
         * public */
        sample2.printOut1();
    }
}

0 コメント:

コメントを投稿