一. 修饰符
1.用于类的修饰符
a)internal , 默认修饰符,指定为内部的,只在当前程序集中才能访问.
class A
{
}
//类似于
internal class A
{
}
b)public , 公共类,其他程序集能够访问
c)sealed, 密封的,不允许被继承
d)abstract, 抽象类,不允许实例化,只能够继承,可以包含抽象成员.
e)partial ,局部类 可将其成员分成多个部分定义.
注:internal与public是一对互斥关系,sealed与abstract是一对互斥关系,两对之间可以互相组合.
2.用于接口的修饰符
a) internal ,默认修饰符, 只在当前程序集中才能访问
b) public ,程序集本身与其他程序集都能够访问
c) 接口中成员 , 不需要指定修饰符,默认为public
注:接口之间无法继承.
定义派生类时,如同时有基类和接口,则先写基类,再写接口,只能继承一个基类但可有多个接口
class Student:Person,IInterface1,IInterface2 {}
3.用于类成员(属性,字段,方法)的修饰符
a)public
b)private 默认值,只能本类中访问
c)internal 只能在程序集中访问
d)protected 只能在类或其派生类中访问
e)internal protected合用 本类中或派生类或同一程序集中访问.
//程序集1:
public class A
{
protected internal void Print()
{
Console.WriteLine("Hello");
}
}
class B
{
public void Test()
{
A a = new A();
a.Print(); //正确,属于同一程序集
}
}
class C:A
{
public void Test()
{
A a = new A();
a.Print(); //正确,既属于同一程序集,又为它的派生类
}
}
//程序集2
class D:A
{
public void Test()
{
Print(); //正确,派生类
}
}
4.其他修饰符
a) virtual 虚方法,派生类可重写
b) abstract 抽象方法,必须重写,只能在抽象类中
c) override 对基类的方法重写
d) extern 用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与DllImport 特性一起使用。
在这种情况下,还必须将方法声明为 static,如下示例所示:
[DllImport("avifil32.dll")]
private static extern void AVIFileInit();