访问修饰符的个人理解-private与protected
??????????????????????????? 一:private
???????????????????????????
private --只有在聲明它的類或結構中訪問.
例:
public class A
{
? private string name="xu";
? int age="23";? //默認為private
}
這時就不能在A的外部直接讀取name和age的值,只有通過A類中的方法或屬性完成。完整示例:
public class A
{
? private string name="xu";
? int age="23";? //默認為private
? public string GetName()? //這時的屬性或方法就不能再聲明為private 或protected了,這樣會導致在外部同樣不能訪問。
? {
? return name;
? }
? public int Age
? {
? get { retunr age;}
? }
}
public class B
{
?? public B()
?? {
???? A a1=new A();
???? //string x=a1.name;? 這樣就不能訪問A的name了
???? string x=a1.GetName() ; //通過方法來訪問。
???? //int age=a1.age;??? can not do this;
???? int age=a1.Age; //通過屬性來訪問
?? }
}
?????????????????????????????????? 二 protected
protected 關鍵字是一個成員訪問修飾符。受保護成員在它的類中可訪問并且可由派生類訪問。
個人理解為:受保護成員只能在聲明它的類中訪問(如同private一樣)或者通過它的派生類來訪問。
如下例:
using System;
class A
{
??? protected int x = 123;
??? public int X{get return x;}
}
class B : A
{
??? static void Main()
??? {
??????? A a = new A();
??????? B b = new B();
??????? // Error CS1540, because x can only be accessed by
??????? // classes derived from A.
??????? // a.x = 10;
??????? // a.X;----這樣就可以讀取
???????
??????? // OK, because this class derives from A.
??????? b.x = 10;??
??? }
}
分析:
一:當使用a.x=10時,由于A是基類,因此其下的private x不能外部訪問,此時用a.x=10就會報錯。
二:為什么用b.x=10就可以呢,這也是外部呀? ^_^:因此,此時,類B是類A的派生類,protected 修飾的如果在派生類中就可以訪問。
總結:protected類型的,在外部而非派生類中訪問時除非通過方法或屬性,否則不可以訪問。而在派生類中就可以訪問。
????? private類型的,除非通過方法或屬性,否則不可以在外部訪問。
?????
?????
????? 屬于? 默認的成員可訪問性? 該成員允許的聲明的可訪問性?
enum? public?? 無
?
class? private? < public protected internal private protected internal >
?
interface? public? 無
?
struct? private? <public internal private >
?
轉載于:https://www.cnblogs.com/McJeremy/archive/2008/05/16/1200843.html
總結
以上是生活随笔為你收集整理的访问修饰符的个人理解-private与protected的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关注震灾
- 下一篇: 批处理-DHCP绑定IP地址