《03 面向对象程序设计基础》.doc
文本预览下载声明
第3章 面向对象程序设计基础
“The huge advantage of classes in object-oriented programming is that they encapsulate the characteristics and capabilities of an entity in a single, self-contained and self-sustaining unit of code”____Jesse Liberty.
我们已经看到,在C#代码中都出现了类(class)的身影。类是C#中实现面向对象程序设计的基础,是C#封装的基本单元,C#中也是由类来把对象、属性、方法等类成员封装在一起并进而形成一个数据结构的。从前面的叙述中也已经看到,当类的成员定义为protected或private时,外部是不能访问的;而当定义为public时,任何用户均可访问它。本章将简介面向对象程序设计的基础,包括类及其构成、构造函数和析构函数、类的数据成员、类的方法成员、方法和运算符的重载、类的属性成员、接口等。本章重点内容如下:
面向对象的基本概念。
C#中类的定义、类的方法。
类的构造函数和析构函数。
运算符和方法的重载。
基类和派生类。
接口。
3.1 类
在面向对象的程序设计中,程序不再面向过程,不再遵循某种顺序的逻辑,编程人员不需控制和决定执行的顺序。用户可以通过按钮、单击等操作导致某个事件的发生,并触发相应的某个方法。这里最重要的概念就是类。C#的处理逻辑都要放在类中,而类是一个能存储数据并执行代码的数据结构。
3.1.1 类、对象及类成员类型
在现实生活中,“类”是人们对某些具有共同属性和行为的自然事物的抽象,例如可以把交通工具分为机动车类和非机动车类等。在程序设计中,“类”则是用来创建新“物品”——即对象——的模板,并为属于同“类”的所有对象提供统一的抽象描述。但是“类”往往是抽象的,而“类”的“实例对象”则是“类”的个体实物。例如,宝马是一款汽车,而汽车是一个“类”,宝马作为一个具体的“实例对象”,是汽车“类”的一个“实例”。
类往往包含数据成员和函数成员。其中,“数据成员”存储与类或类的实例相关的数据,包括变量字段和常量;“函数成员”执行代码,包括方法(相当于C++中的成员函数)、属性、构造函数、析构函数、事件等。声明方法的语法可以包括4个部分,即:
(1) 返回类型,如不返回任何类型,应指定为void。
(2) 名称。
(3) 参数列表,由()括起来。
(4) 方法体,由{}括起来。
:与C和C++不同,C#在类的外部不能声明全局变量字段。所有字段都属于某个类,且需要在类内部声明。
3.1.2 类的定义
在C#中,类使用class进行标识和声明,类名与对应的文件名相同。例如,可以建立“计算机”类Computer,Computer类中有“计算机”类的相应属性,如“屏幕尺寸”属性Size等,还有可能定义其方法或动作如“格式化”动作Format等,但这个类只是描述了“计算机”这个物体而并非某个特定的品牌机器;每个具体的计算机产品myComputer(如HP品牌的笔记本电脑)则是“计算机”这个类的一个实例对象,有其对应的属性的设定值,如myComputer.Size = 12。
为了引用该类的具体方法,应使用诸如myComputer.Format()的方法,而这个方法执行后将对你的HP计算机进行格式化。可见,类与实例对象的关系是抽象与具体的关系,类是多个实例的综合抽象。
类中一般包含属性、方法和事件的定义,类的成员包括类的常量、字段、属性、索引器、方法、事件、构造函数和析构函数等,它们构成类的主体,用来定义类的数据和行为由若干个数据成员、方法成员等组成。类名的每个单词首字母一般要大写。类的声明一般形式如下:
[访问修饰符] class 类名 [:基类]
{ 类的成员; }
其中,如果将要定义的这个类不是某个其他基类的派生类,[:基类]是可以省略的。访问修饰符是用来限制类的作用范围或访问级别的(可省略)。C#用多种修饰符来表达类的不同性质和访问级别。根据其保护级,C#类有几种不同的限制修饰符(如果不是嵌套的类,命名空间或编译单元内的类只有public和internal两种修饰),常见的修饰有:
public:表示不限制对类的访问,可以被任意存取。类的访问权限默认为public。
protected:只可以被本类和其派生类成员存取。
internal:表示该类能够由程序集中的所有文件使用,而不能由程序集之外的对象使用。
protected internal:唯一的一种组合限制修饰符,只可被本组合体内所有的类和这些类的继承子类所存取。
private:只可以被本类的成员所存取。
abstr
显示全部