日期:2014-05-17 浏览次数:20764 次
C#是由类组成的。在接下来的讲解中我讲通过类将C#面向对象编程基础串一遍。
我把类分为三种:抽象类、接口、实体类。
抽象类
对于一个类当我们使用关键字abstract的时候,这个类就是抽象类。
抽象类和抽象方法存在的意义?
为了能够实现基类和派生类对方法Print的多态行为,通常情况下我们需要首先,在基类Person将Print方法声明为虚方法,然后在多层派生类中,运用覆载重写Print方法,得到Student和GraduateStudent的属于自己的Print方法。这样就可以实现多态行为。而实际情况是,有的时候,我们没有必要在基类Person中也定义Print方法的具体实现过程,我们并不关心或使用到基类Person的Print方法,不需要基类的Print方法为我们提供任何服务,在这种情况下,编写基类Person的Print方法的具体实现过程,就会显得毫无意义和浪费时间,我们要使用的仅仅只是派生类Student或GraduateStudent的Print方法,并能够实现Print方法的多态行为。这个时候,多态就派上用场了,我们只需将基类的Print方法声明为抽象方法,只提供方法头,而不必编写方法体的具体实现内容。
接口
接口可以看成是一种特殊的类。从程度上看,接口要比抽象类更为抽象,而抽象类则比具体类来得抽象。
特点:
在接口的实现中,如果有不同命名空间的两个相同名字的接口需要我们实现,该如果实现呢。
实体类
下面通过实体类来说明一下类的内脏器官。
创建类和对象
类的声明
[属性集信息] [类修饰符] class 类名 [:基类]
{
[类成员] //包括类的属性和方法
}
类的实例化(创建对象)
类名 对象名= new 类名();
构造函数和析构函数
构造函数和析构函数没有返回类型。
构造函数
当我们定义一个一个类之后,就可以通过new运算符将其实例化,产生一个对象。为了能够规范安全的使用这个对象,C#提供了实现对象进行初始化的方法,这就是构造函数。
语法形式:
[访问修饰符] <类名>([参数列表])
{
//构造函数的主体
}
如果要写一个带参数的构造函数,一点要写一个空的构造函数(不带参数的构造函数),否则会出错。
一个学生类的举例
class student { internal string studentNo,studentName, studentSex; internal int studentAge; public student() //一个静态构造函数,不带参数 { //对student类的四个属性赋予初始值 studentNo = "10001"; studentName ="小王"; studentSex ="男"; studentAge = 19; } //带参数的构造函数 public student(string no,string name,string sex,int age) { studentNo = no; studentName = name; studentSex = sex; studentAge = age; } }
析构函数
一般来说,创建一个对象时需要用构造函数初始化数据,与相对应释放一个对象时就用析构函数。所以析构函数是用于实现析构类实例所需操作的方法。
语法形式:
~ <类名>()