我正在阅读下面链接中提到的问题
为什么私有字段是类型私有的,而不是实例私有的?
访问类的私有成员
访问实例对象的私有字段
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)我相信当代码或类被编译时,基类的所有方法、变量等都会被添加到派生类中。我是对的吗?
如果我们可以访问类的私有变量,那么为什么扩展另一个类的类不能访问基类的私有变量?
因为变量没有在派生类的程序文本中声明,这就是 Java 和 C# 定义私有访问的方式。(有关嵌套类的详细信息在 Java 和 C# 之间有所不同;如果您想要一种语言或另一种语言的详细信息,请在您的问题中更具体。)
我相信当编译代码或类时,基类的所有方法、变量等都将添加到派生类中。我是对的吗?
他们没有被添加到班级中,不。它们由派生类继承,并且派生类的任何实例都将具有继承的所有字段 - 但这与它们的行为不同,就好像它们是在派生类中声明的一样。