在C#中有关的访问修饰符主要有以下5种:private(私有的),protected(受保护的),internal (程序集内部的),public(公开的)以及protectde internal(只有本程序内或者继承于该类的类型可以访问)。
使用访问修饰符修饰的对象有:namespace(命名空间),class(类),struct(结构),enum(枚举),interface(接口),delegate(委托)以及他们的成员等等。下面进行逐一阐释。
1.namespace: 隐式具有public类别,不能为其显式添加任何访问修饰符。但作为namespace的成员职能具有public或者internal访问级别。
2.枚举成员: 同命名空间一样,只具有public访问级别,且不能枚举成员添加访问修饰符。
3.struct和class: 当仅包含在namespace中时,默认是internal级别,可以显示为其添加public,internal; 当被包含在一个类的内部的时候,可以是protected或者privatete修饰符。
4.delegate: 默认具有internal级别
5.interface: 与类不同,接口默认具有internal级别。接口也可声明为public或internal。
6.类的成员: 可以具有5种访问级别。默认为private.
7.结构的成员: 可以是public,private,internal访问级别。默认是private,因为结构是隐式封闭的。由于结构不具有继承关系,所以不能用protected或者protected internal去修饰结构成员。
8.接口的成员: 同枚举成员一样,具有public级别,但是不能为其显式添加public关键字。
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
B b = new B();
b.Fun();
}
}