public是可访问权限最高的,比如姓名,每个人都可以知道别人的姓名,这个不是什么秘密
protected的访问权限要低些,只有子类才可以访问得到父类的protected属性。就好像老子的财产只有儿子才能继承。如果别人想要问:hey, son.财产=多少?儿子会拒绝,因为son的财产是从father那里继承来的,不可外泄。
private的访问权限最低了,只有本人才能知道。比如某人的银行卡密码。只有他自己类内部的方法才能访问到这个属性。
internal的访问权限仅限于同一程序集内部。什么叫同一程序集呢?也就是在同一个类库(dll)里,类的internal属性跟public属性一样,谁都可以访问。
protected internal的访问权限是protected与internal的并集。意思是说,对于隶属于同一个程序集的其他类,可以像internal属性一样访问他,对于不同程序集的类,只有继承了我这个类的类才能访问到这个属性。注:protected 与 internal的顺序不重要。
举个栗子吧:
程序集1:
public class A
{
protected internal string x="X";
}
public class D
{
public string func()
{
A a = new A();
return a.x;//OK,可以正确访问到
}
}
程序集2:引用程序集1的dll
public class B:A
{
public string func()
{
return x;//OK,可以正确访问到
}
}
public class C
{
public string func()
{
A a= new A();
//return a.x;//No,不可以访问到
}
}