protected成員訪問規則

前幾天我一個朋友問我,在子類中爲什麼不能訪問父類的protected方法?

她在某本書上看到的代碼大概是如下所示:

 

    public class A

    {

        public string Name = "";

        protected int Age = 0;

    }

    public class AB : A

    {

        public void Init()

        {

            A a = new A();

            a.Name = "lifengguo";

            a.Age = 24;

        }

}

 

但是她編譯時總是不能通過,她問我爲什麼?是我的理解是:

 

Protected是受保護成員,它在它的類中可訪問並且可由派生類訪問。

上面的一句包含了三層意思:

1、 類的本身可以訪問;

2、 派生類中可以訪問;

3、 類的實例是不能夠訪問Protected成員的。

 

下面代碼是在類的本身使用了Protected成員

    public class A

    {

        public string Name = "";

        protected int Age = 0;

        public A()

        {

            Name = "lifengguo";

            Age = 24;

        }

}

 

下面的代碼是在派生類中使用了Protected成員

    public class AB : A

    {

        public AB()

        {

            base.Name = "黎鋒果";

            base.Age = 24;

        }

    }

 

下面的代碼是類的實例訪問類的成員:

    public class C

    {

        public void Init()

        {

            A a = new A();

            AB ab = new AB();

            a.Name = "lifengguo";   //OK

            ab.Name = "黎鋒果";     //OK

            a.Age = 24;             //Error

            ab.Age = 24;            //Error

        }

}

發佈了19 篇原創文章 · 獲贊 2 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章