------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
对象=数据+动作(方法、操作)
事件又称消息,表示向对象发出的服务请求。
方法表示对象能完成的服务或执行的操作功能。
类与对象:一个具体对象是类的一个实例,类与实例的关系是抽象与具体的关系,类是多个实例的综合抽象,实例是类的个体实物。
类的数据成员
常量:[访问修饰符] const 数据类型常量名=常量的值;//常量的值是固定不变的
字段:字段表示类的成员变量,字段的值代表某个对象的数据状态,不同的对象,数据状态不同,意味着各字段的值也不同。
属性:
[访问修饰符] 数据类型属性名
{
Get
{
//获得属性的代码
}
Set
{
//设置属性的代码
}
}
其中,get语句与set语句称为属性的访问器。使用属性,可以增强类的安全性和灵活性。
类的可访问性
Public:表示公共成员,访问不受限制
Private:表示似有成员,访问仅限于该类内部
Internal:表示内部成员,访问仅限于当前程序集
Protected:表示受保护的成员,访问仅限于该类及其派生类
Protected internal:访问仅限于该类或当前程序集的派生类
类的嵌套
在类的内部或结构的内部定义的类型成为嵌套类型,又称内部类型。不论是类还是结构,嵌套类型默认均为private,也可以设置其他类型。嵌套类型通常需要实例化为对象之后,才能引用其成员,其使用方法与类的普通成员使用基本相同。
构造函数
1.构造函数是类的重要成员,主要用来初始化对象,通常使用public来标识,它不能包含任何返回值。
2.类的字段可通过关键字readonly设置为只读字段,对于标记为只读的字段来说,要么在声明时为它赋值,要么只能在对象初始化时赋值,即需要使用构造函数实现。
析构函数
析构函数主要用来回收类的实例所占用资源,是以在类名前加“~“的方式来命名的。它的特点:
(1) 不能再结构中定义析构函数,只能对类使用析构函数;
(2) 一个类只能有一个析构函数;
(3) 无法继承或重载析构函数;
(4) 析构函数既没有修饰符也没有参数;
(5) 在析构函数被调用时,.net公共语言运行时自动添加对基类object.finalize方法的调用,以清理现场,因此析构函数中不能包含对object.finalize的调用。
静态类和静态成员
通过他们无需创建对象就能够访问到数据和方法。静态类成员可用于分离独立于任何对象标识的数据和行为,无论对象发生什么更改,这些数据和函数都不会随之变化。
静态类
静态类使用static关键字来声明,以指示它仅包含静态成员,不能使用new关键字创建静态类的实例。在实际应用中,当类中的成员不与特定对象关联的时候,就可以把它创建为静态类。
静态类功能如下:
(1) 静态类仅包含静态成员;
(2) 静态类不能被实例化;
(3) 静态类是密封的;
(4) 静态类不能包含实例构造函数
由于静态类是密封的,因此不可被继承。静态类不能包含实例构造函数,但仍可声明静态构造函数,以分配初始值或设置某个静态状态。
静态类优点如下:
(1) 编译器能够自动执行检查,以确保不添加实例成员;
(2) 静态类能够使程序的实现更简单迅速,因为不必创建对象就能调用其方法。
静态成员
静态类成员通过static关键字标识,可以是静态方法、字段、属性或事件,他们属于类,而不属于类的实例,因此都是通过类而不是通过类的实例来访问。
静态构造函数
不能直接调用静态构造函数。静态构造函数在类的第一个实例创建之前或者调用类的任何静态方法之前执行,而且最多执行一次。
抽象类与接口的比较
抽象类是一种不能实例化的类,抽象类可以包含抽象成员,也可以包含非抽象成员,即抽象类可以是完全实现的也可以是部分实现的,或者完全不实现的。抽象类可以用来封装所有派生类的通用功能。
与抽象类不同的是,接口顶多像一个完全没有实现的只包含抽象成员的抽象类,因此无法使用接口来封装所有派生类的通用功能,接口更多的用来指定程序设计开发规范,接口的代码实现由开发者完成。
C #规定一个类只能从一个基类派生,但允许从多个接口派生。
面向对象的最基本的特征是封装性、继承性和多态性
封装性
封装就是把对象的全部属性和全部服务结合在一起形成一个不可分割的独立单位。
继承性
派生类的对象拥有其基类的全部属性和方法。类的继承性最主要的优点就是提高代码的可重用性。
1. 派生类只能从一个类中继承。
2. 在C#中,派生类不能继承其基类的构造函数,但通过使用base关键字,派生类构造函数就可以调用基类的构造函数。当创建派生类对象时,系统首先执行基类构造函数,然后执行派生类构造函数。
3. 为了阻止一个类的代码被其他类继承,可以在声明类时添加sealed关键字,将类声明为密封类。
多态性
当派生类从基类继承时,会获得基类的所有方法、字段、属性和事件。派生类允许扩展基类的成员,也可以重写基类的方法成员,以更改基类的数据和行为。
1. 使用new关键字重新定义类的成员。
使用new关键字来定义与基类中同名的成员,即可替换基类的成员,使该方法、字段或是属性有新的定义。
2. 使用new关键字声明类的成员可以通过强制类型转换来继续访问基类的成员,为了使派生类的实例完全替换来自基类的成员,在C#中,只需把基类的相关成员声明为虚拟的成员即可。首先在基类中用virtual关键字标识虚拟成员,然后在派生类中用override关键字将基类的虚拟成员覆盖掉。