标签:类定义
类的定义
class类名
{
类体
}
类的访问级别
C++中的类没有所谓访问级别的问题,只需要导入定义类的头文件,就可以使用这个类。而在C#和Java中,并不是所有的类都可以被任意使用。
在Java中,程序以包(package)的方式来组织,包的结构类似于文件夹。如果想使用另一个包里定义的类,除了要先导入这个包之外,想使用的这个类还必须是公有类(以public关键字定义的类)。如果在定义类的时候没有使用关键字public来修饰,则这个类只能在定义它的包里被使用。
在C#中,系统按照“解决方法”、“项目”和“源文件”的的组织。“解决方案”的级别最高,一个“解决方案”可以包含若干个“项目”。然后,从文件的层次来讲,一个“项目”中可以包含若干个C#源文件,一个C#源文件中可以包含若干个命名空间、类、接口、枚举等。从程序元素的层次来看,一个项目中可以包含命名空间、类、接口等。
与Java类似,C#中的类按照访问级别被分为内部类(这里讲的“内部”是指访问级别,不是指在类中定义的类)和公有类。内部类只能在本项目被使用,如果想让某个类能被其他项目中的类访问,则必须将其定义为公有类。
公有类用public关键字修饰;
内部类可以用关键字internal修饰,但一般不采用这种方式,因为C#中规定,没有加关键字public的类就是内部类。
普通类、抽象类和密封类
如果在定义类时使用了关键字abstract,那么这个类就是抽象类。抽象类本身不能被实例化,
只能被继承。
如果在定义类时使用了关键字sealed,那么这个类就是所谓的“密封类”,和抽象类刚好相反,密封类不能被继承(类似于Java中的final类)。
如果在定义类是没有使用关键字abstract或sealed,那么这个类就是一个普通的类。
注意:关键字abstract和sealed是互斥的。
以上的三种类都可以是public的或internal的。
继承父类与实现接口的格式
class类名 : 父类,接口1,接口2,...
{}
和Java类似,C#中只能直接继承一个父类,但可以实现多个接口。在不同于Java中的继承父类用关键字extends,实现接口用关键字implements。C#中采用了类似C++中的方式,即:使用冒号。
在书写格式上,冒号后面的列表中必须是父类在前,接口在后。
不同于C++,在冒号后面的列表中不能使用访问级别修饰符。
要注意的是,C#规定,子类的访问级别不能高于基类。
如果基类是抽象类,那么派生类必须要实现基类中的所有抽象方法,否则,派生类也必须是抽象类。
当然,子类也必须实现其实现的接口的所有方法。
接口的定义
使用关键字interface定义接口,而且规定接口名必须以大写的英文字母I开头。
接口也可以是internal的或public的。但不能对接口使用关键字abstract和sealed。
接口可以有父接口
标签:类定义
原文地址:http://3677403.blog.51cto.com/3667403/1661558