当私有变量可以通过这种方式访问​​时,为什么我无法访问基类的私有字段

dbw*_*dbw 0 c# java

我正在阅读下面链接中提到的问题
为什么私有字段是类型私有的,而不是实例私有的?
访问类的私有成员
访问实例对象的私有字段

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;

    }
Run Code Online (Sandbox Code Playgroud)

我的问题是
1) 如果我们可以访问类的私有变量,那么为什么扩展另一个类的类不能访问基类的私有变量?

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

Jon*_*eet 5

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

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

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

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