0

以下のリンクで言及されている質問を読んで
いたのですが、なぜプライベート フィールドはインスタンスではなく型に対してプライベートなのですか?
クラスのプライベート メンバーへの
アクセス インスタンス オブジェクトのプライベート フィールドへのアクセス

public class MyClass : ClassA
    {
        private object myObj;

        public object Field
        {
            get { return myObj; }
            set { myObj = value; }
        }

        public MyClass()
        { 
        }


        public MyClass(MyClass class1)
        {
            class1.myObj = 5;
            this.myObj = class1.myObj;
            class1.myObjOfClassA; // Why I can not access myObjOfClassA when I can access myObj of class1 object
        }
    }


    public class ClassA
    {
        private object myObjOfClassA;

    }

私の質問は
1) 前述のようにクラスのプライベート変数にアクセスできる場合、別のクラスを拡張するクラスが基本クラスのプライベート変数にアクセスできないのはなぜですか?

2)コードまたはクラスがコンパイルされると、基本クラスのすべてのメソッド、変数などが派生クラスに追加されると思います。私はこれで正しいですか?

4

1 に答える 1

5

上記のようにクラスのプライベート変数にアクセスできる場合、別のクラスを拡張するクラスが基本クラスのプライベート変数にアクセスできないのはなぜですか?

派生クラスのプログラム テキストで変数が宣言されていないため、Java と C# のプライベート アクセスがどのように定義されているかが分かります。(ネストされたクラスに関する詳細は、Java と C# の間で異なります。いずれかの言語の詳細が必要な場合は、質問でより具体的にしてください。)

コードまたはクラスがコンパイルされると、基本クラスのすべてのメソッド、変数などが派生クラスに追加されると思います。私はこれで正しいですか?

それらはクラスに追加されません。それらは派生クラスによって継承され、派生クラスのインスタンスには継承されるすべてのフィールドがありますが、派生クラスで宣言されているかのように動作するのと同じではありません。

于 2013-09-13T13:09:16.180 に答える