(面向对象的编程基础.ppt
文本预览下载声明
第4章 面向对象的编程基础 4.1 类 在面向对象的程序设计中,类是面向对象程序设计的核心。在面向对象的概念里,现实世界的个体的数据抽象化为对象的数据成员(字段),个体的特性抽象化为对象的属性,个体的行为及处理问题的方法抽象化为对象的方法或事件。类是对某一类对象的抽象;而对象是某一种类的实例。对象可以执行类定义的方法来访问其属性、事件和字段。C#与C++的类不同在于不支持多重继承,但通过接口(interface)可实现多重继承。 4.1 类 4.1.1 C#类的声明和对象的创建 C#类的一般声明格式如下: [访问修饰符] class 类名 { 字段变量声明 构造函数 方法 …… }; 4.1 类 其中,class是定义类的关键字。访问修饰符用于控制类中数据和方法的访问权限,C#语言中有以下几种访问权限: (1)public: 任何外部的类都可以不受限制的存取这个类的方法和数据成员。 (2)private :类中的所有方法和数据成员只能在此类中使用,外部无法存取。 (3)protected :除了让本身的类可以使用之外,任何继承自此类的子类都可以存取。 (4)internal :在当前项目中都可以存取。该访问权限一般用于基于组件的开发,因为它可以使组件以私有方式工作,而该项目外的其它代码无法访问。 (5)protected internal :只限于当前项目,或者从该项目的类继承的类才可以存取。 4.1 类 4.1.2 类的成员 类的成员根据是否为函数可将其分为数据成员(常量、字段)和函数成员(方法、属性、事件、构造函数、析构函数等)。 类的成员具体含义如下: (1)常量:它代表了与类相关的常数数据。 (2)字段(或称域):字段是表示与对象或类关联的变量,如上例公有类employee中的 No、name、sex 和address。 (3)方法:方法是实现可以由对象或类执行的计算或操作的成员。如上例employee类中disp_employee( )、Main( )方法。 (4)属性:属性是对象或类的特性。与字段不同,属性有访问器,这些访问器指定要在它们的值被读取或写入时执行的语句。这些语句可以对字段属性进行计算,并将计算结果返回给相关字段。 4.1 类 (5)事件:它定义了由类产生的通知,用于说明发生什么事情。 (6)实例构造函数:它执行需要对类的实例进行初始化的动作。 (7)析构函数:它行在类的实例要被永远丢弃前要实现的动作。 (8)静态构造函数:执行静态构造函数主要用来初始化一个类的静态成员。静态构造函数只在.NET运行时加载类时执行一次,以初始化静态字段。它没有访问修饰符,也没有参数,也只能有一个,因为C#代码从来不会调用它。 4.1 类 4.1.3 类的构造函数和析构函数 构造函数和析构函数是在类体中说明的两种特殊的成员函数。构造函数的功能是在创建实例(也就是对象)时,使用给定的值来将实例初始化。析构函数的功能是用来从内存中释放一个实例的,在删除实例前,用它来做一些清理工作,它与构造函数的功能正好相反。 构造函数的特点如下: (1)构造函数是成员函数,该函数的名字与类名相同。 (2)构造函数是一个特殊的函数,该函数无数据类型,它没有返回值。构造函数可以重载,即可以定义多个参数个数不同的函数。 (3)构造函数访问权限总是public 。如果是private,则表示着该类不能被实例化,这通常在只含有静态成员的类中。 4.1 类 (4)程序中不能直接调用构造函数,在创建实例时系统自动调用构造函数。 (5)如果类没有为对象提供构造函数,则默认情况下 C#将创建一个默认的构造函数,该构造函数实例化对象,并将所有成员变量设置为相应的默认值。 析构函数的特点如下: (1)析构函数是成员函数,函数体可写在类体内,也可定在类体外。 (2)析构函数也是一个特殊的函数,它的名字同类名,并在前面加“~”字符,用来与构造函数加以区别。析构函数不能有参数,无数据类型。 (3)一个类中只可能定义一个析构函数。当撤销对象时,析构函数自动被调用。析构函数不能被继承和重载。 4.1 类 4.1.4 静态成员和实例成员 类的成员要么是静态成员,要么是实例成员(非静态成员)。当用static修饰符声明后,则该成员是静态成员。如果没有static修饰符,则该成员是实例成员。两者不同在于静态成员属于类所有,为这个类所有实例共享。而实例成员属于类的实例所有。 【例4-3】下面举一个例子,说明实例成员和静态数据成员的应用。 4.1 类 4.1.5 分部类 分部类可以将类(结构或接口等)的声明拆分到两个或多个源文件中。 若要拆分类的代码,被拆分类的每一部分的定义前边都要用partial关键字修饰。分部类的每
显示全部