簡體   English   中英

為什么可以通過這種方式訪問​​私有變量時無法訪問基類的私有字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM