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)如果我们可以访问前面提到的 Class 的私有变量,那么为什么扩展另一个类的类不能访问基类的私有变量?

2)我相信当编译代码或类时,基类的所有方法、变量等都将添加到派生类中。我说得对吗?

4

1 回答 1

5

如果我们可以访问上面提到的 Class 的私有变量,那么为什么扩展另一个类的类不能访问基类的私有变量?

因为变量没有在派生类的程序文本中声明,这就是为 Java 和 C# 定义私有访问的方式。(嵌套类的详细信息在 Java 和 C# 之间有所不同;如果您想了解一种或另一种语言的详细信息,请在您的问题中更具体。)

我相信当编译代码或类时,基类的所有方法、变量等都将添加到派生类中。我说得对吗?

他们没有添加到课程中,不。它们由派生类继承,派生类的任何实例都将具有所有被继承的字段 - 但这与它们的行为就好像它们是在派生类中声明的一样。

于 2013-09-13T13:09:16.180 回答