预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第5章类和对象 .NET在线培训学习资料 更多学习材料,请到www.rzchina.net下载 在面向对象程序设计中,类是一个非常重要的概念,类可以定义为对于数据以及数据依赖的功能进 行的封装。例如,水果在蔬菜中就是一个类,苹果、桃子等水果都是水果类的派生类。水果具有的色、 香、味等功能就是水果类的属性,将水果和水果的属性结合起来的,才能称之为水果类。如果水果类只 是单纯的具有一个空的水果类定义,则称之为虚类。 对象则是类的一个明确化定义,在程序中不能直接使用类的定义,这是任何面向对象程序语言设定 的基础。如果想要使用类,则需要事先声明一个对象,该对象被称之为是类的一个“实例化”,通过对 象才能使用类的属性和成员函数,正如前面章节中多次使用的那样。 本章将系统的介绍类和对象的各种基础概念,第一部分解释和理解类的概念,包括类的实例成员、 访问修饰符、构造函数、初始化函数等。第二部分将分析静态成员以及常量和只读字段的差异性,也将 讨论类的继承问题。 5.1理解类的概念 在现实世界中,分类是无处不在的。例如,自然界是由有机体和无机体组成,同样,动物、植物都 是有机体,也就是有机体的两种分类,而动物又可以区分出很多种,植物也同样如此,这反映在分类的 概念上,如图5-1所示。 第5章类和对象·115· 图5-1自然界的分类 为了对这些分类的概念有清晰的描述,产生了类的概念。类是对分类的准确描述,通过类的概念可 以将每个分类的特征加以区分,产生不同的类别。类别同时也是自然界进化的产物,如果说对事务的直 接表述是从微观看问题的话,对类的描述和总结就是从宏观的角度分析事务的性质。 面向对象程序设计就是对上述思想的继承,所有的面向对象语言基本上都遵循这个思想,C#也不 例外。 在C#语言中,类是编程中的基本要素。每个函数和变量都要依赖于一个类来实现。例如,在前面 的实例程序中,每个命名空间下面都会产生一个与工程项目名称相同的类,诸如Main()函数等函数 都归属于这个类,也可以将其称之为“主”类。如果程序较为复杂,描述的类比较多,则各个类之间的 关系是相互平行的,不存在相互之间的归属关系,除非一个类是继承自另外一个类的情况出现。 注意无论一个程序中的类有多少,程序的入口Main()函数均只有一个,也就是“主”类中的 Main()函数,其余类中均不能再出现Main()函数,其成员函数只能作为简单的成员出现,而不是 可直接调用的入口函数。 5.2定义类 C#语言中定义一个类是件非常简单的事情。先来看一个简单的类声明: ClassEmployee { privatelongemployerID; } 类的声明中使用到的关键字是Class,这个关键字表明了接下来定义的是一个类类型,而不是其余。 接着,在Class的后面需要定义一个类的名称,类的名称可以随便取,这里使用的是Employee。 在类的内部可以定义类的成员,如成员函数、成员变量等,这里定义的是一个私有的long型变量 employerID,这个变量是私有的变量,所以只能在Employee类的内部使用,如果是Employee类的子类 希望调用该变量,编译器会禁止这么做。 在有些情况下,熟练的C++程序员也会在类的定义之后加上一个分号(;),这样做也是被允许 的,如下所示的两段代码是相同的: ClassMyclass { //Members } ClassMyclass ·116· { //Members }; 5.2.1类的成员 直观的说,类是由成员构成的。在一个类的定义中,任何东西都可以被定义成类的成员,这些东西 包括成员变量和成员函数。下面是可以定义为类的成员的各种类型: ‰字段:字段用于保存值的成员变量,可以对一个字段应用几个修饰符,这主要取决于对于变量 的使用情况。如变量可以应用的修饰符有static、readonly和const等。 ‰方法:方法是对对象进行操作的实际代码段,各种成员函数和结构类型都可以称之为方法。 ‰特性:特性是一种特殊的方法,从感觉上可以认为特性是一种新的类型,使用者在使用时感觉 更像是在使用字段,而不是使用方法,这样可以得到更好的抽象度,特性也被称之为smartfield。 ‰常量:变量的一种类型,指的是值不会改变的变量,与readonly有所区别。 ‰索引器:索引器的使用感觉与数组差不多,有时也被称之为smartarray,这种类型使得在操作时 就好像是在操作数组一样。例如,ListBox类拥有用于操作和表示控件数据的字段和方法,但是 这个类从概念上说将由其显示的数据数组来定义。索引器通过下标使用实际的对象。 ‰事件:面向对象语言是事件驱动型语言,就是说所有的执行代码都以事件的形式出现。例如, 在Wi