[英]Why I can not access private field of a base class when private variables can be accessed this way
我正在閱讀以下鏈接中提到的問題
為什么專用字段專用於類型而不是實例專用?
訪問班級的私人成員
訪問實例對象的私有字段
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)我相信當代碼或類將被編譯時,所有基類的方法,變量等都將被添加到派生類中。 我說得對嗎?
如果我們可以如上所述訪問類的私有變量,那么為什么擴展另一個類的類不能訪問基類的私有變量?
因為該變量未在派生類的程序文本中聲明,所以這是為Java和C#定義私有訪問的方式。 (關於嵌套類的詳細信息在Java和C#之間有所不同;如果您想要一種或多種語言的詳細信息,請在問題中更具體地說明。)
我相信,當將編譯代碼或類時,基類的所有方法,變量等都將添加到派生類中。 我說得對嗎?
他們沒有添加到班級,不。 它們是由派生類繼承的,派生類的任何實例都將具有所有被繼承的字段-但這與它們在派生類中聲明時的行為不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.