C# 【方法】默认访问级别 : private
C# 【类】和【结构体】默认访问级别 : internal
1.命名空间下的元素的访问修饰符
public: 同一程序集的其他任何代码或引用该程序集的其他程序集都可以访问该类型或成员。
internal: 同一程序集中的任何代码都可以访问该类型或成员,但其他程序集不可以访问。【能够修饰类的访问修饰符只有 internal 和 public】
private: 同一类和结构的代码可以访问该类型和成员。
protected: 同一类和派生(继承特性)类中的代码可以访问该类型和成员。
protected internal: 同一程序集中的任何代码或其他程序集中的任何派生类都可以访问该类型或成员。
MSDN提示 :
1) 派生类的可访问性不能高于其基类型。换句话说,不能有从内部类 A 派生公共类 B。如果允许这种情况,将会使 A 成为公共类,因为 A 的所有受保护的成员或内部成员都可以从派生类访问。
2) 成员的可访问性决不能高于其包含类型的可访问性。
3) 可以使用五种访问类型中的任何一种来声明类成员(包括嵌套的类和结构)。
接口(interface )
接口成员访问修饰符默认为public,且不能显示使用访问修饰符。
为了多态,接口不能被实例化;子类实现接口的方法时,不需要任何关键字,直接实现即可;接口存在的意义就是为了多态。
接口中只能有方法、属性、索引器、事件,不能有字段和构造函数。
类(class)
构造函数默认为public 访问修饰符。
析构函数不能显示使用访问修饰符且默认为private 访问修饰符。
类的成员默认访问修饰符为 private。
枚举(enum)
枚举类型成员默认为public 访问修饰符,且不能显示使用修饰符。
结构(struct)
结构成员默认为private 修饰符。
结构成员无法声明为 protected 成员,因为结构不支持继承。
嵌套类型
嵌套类型的默认访问修饰符为 private。 和类,结构的成员默认访问类型一致。
除了权限修饰符外还有四个修饰符 sealed,abstract,virtual,partial (这4个修饰符可以和上面5个权限修饰符一起用,可以加在权限修饰符前面或后面),
密封类(sealed)
sealed 只能用来修饰 class,表示 class 不能被继承。
抽象方法(abstract)
1.需要用 abstract 关键字标记。
2.抽象方法无法声明主体。
3.抽象成员必须包含在抽象类中。
4.由于抽象成员没有任何实现,所以子类必须将抽象成员重写。
5.抽象类不能实例化,抽象类的作用就是为了让子类继承。
6.抽象类中可以包括抽象成员,可以包括有具体代码的成员。
7.抽象方法不能用 static 修饰。
虚方法(virtual)
1.父类中如果有方法需要让子类重写,则可以将该方法标记为 virtual。
2.虚方法在父类中必须声明主体,哪怕是【空实现】。
3.虚方法子类可以重写(override),也可以不重写。