C#是一种面向对象编程语言,这点与C语言不一样(C语言是一门面向过程的语言),面向过程的语言还有Java、C++等。面对对象语言的一个基本特征是他们都有类,类是C#(及这类语言)的一种复杂数据类型。
在生活中,车就是一个类。但车只是一个抽象的概念,它指的是所有车。如果我们想开车,此时就需要某辆具体的车,比如ABC就是“车”类的一个示例。车这个类别中的个体,都有一些共同的特性(如车名、车牌号、颜色和款式等)和行为(手放方向盘、脚踩离合、松开手刹和加油等),所以在C#中,类代表一组具有公共属性和行为的对象。
在C#中,认识和定义一个类是简单的,需要使用class关键字并按格式定义即可,具体如:
Class Person
{
//类成员定义
}
这里的代码定义了一个Person类。定义之后,可在本项目或其他项目中通过类实例化的方式来访问该类,但并非所有已定义的类都能这样被访问。
默认情况下,如果class关键字前没有显示地指定访问修饰符,则类的访问修饰符为internal,表示仅在当前的项目内可被访问。当然也可以显示地使用internal修饰符来定义类,但这样是没有必要的,因为默认修饰符就是internal。
除了使用internal修饰符来修饰类外,还可以为类指定private、protected、public、abstract和sealed等修饰符,以及这几个修饰符的组合。
类定义中可以使用的访问修饰符:
修饰符 | 访问权限 |
---|---|
无或internal | 只能在同一个程序集中访问类 |
public | 同一程序集或引用该程序集的其他程序集都可以访问类 |
abstract或internal abstract | 只能在同一程序集中访问类,该类不能被实例化,只能被继承 |
public abstract | 同一程序集 或引用该程序集的其他程序集都可以访问类,不能被实例化,只能被继承 |
sealed或internal sealed | 只能在同一程序集中访问类,该类 不能被继承,只能被实例化 |
public sealed | 同一程序集或引用该程序集的其他程序集都可以访问类,不能被继承,只能被实例化 |
定义完类之后,还需要在类中定义成。类的成员包括字段、属性、方法和构造函数等,他们与类一样,也都有自己的访问权限。你可以为他们指定public、private、internal和protected等修饰符,也可以使用static关键字将其声明为类的静态成员。静态成员属于类级别的概念,它不属于类的实例(类的实例也叫作类的对象)。
使用不同的修饰符将直接导致类的成员具有不同的访问权限。
修饰符 | 访问权限 |
---|---|
Public | 同一程序集或引用该程序集的其他程序集都可以访问 |
Private | 只有同一个类中可以访问 |
Protected | 只有同一个类或派生类中可以访问 |
Internal | 只有同一个程序集中可以被访问 |
Protected internal | 在同一个程序集、该类和派生类中可以访问 |