public class Class1 { protected int bb; public int cc; } public class class2:Class1 { public void foo() { //可得到base.bb,base.cc Class1 c=new Class1(); //只能得到c.cc,不能訪問受保護成員? } } 為什么在派生類中,只能通過base才能訪問到基類的protected成員,直接創建基類對象就訪問不到了?
2 回答

呼喚遠方
TA貢獻1856條經驗 獲得超11個贊
1. protected 訪問控制符能被用于方法和成員變量。
2. 聲明為protected的方法和成員變量能被同一個包里的所有類所訪問,就像默認修飾符package一樣。
3. 能被該類的子類所訪問,子類可以和父類不在一個包中。
這樣,當你想讓一個類中的某個方法或成員變量在包中都可見,而且其子類也能訪問(子類有可能和父類不在同一個包中)但又不想讓所有類都可以訪問該類時,就可以用protected修飾符。
可訪問性:
public > protected > package >private

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
標識為Protected的類A中的成員,類A和從類A派生的類的方法可以訪問
如果是類A的對象和從類A派生的對象是不能訪問的
參考:Programming C#
- 2 回答
- 0 關注
- 480 瀏覽
添加回答
舉報
0/150
提交
取消