05 面向对象编程类和对象.pdf
《05 面向对象编程类和对象.pdf》由会员分享,可在线阅读,更多相关《05 面向对象编程类和对象.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第5章 类和对象 第5章 类和对象 .NET 在线培训学习资料 更多学习材料,请到 下载 在面向对象程序设计中,类是一个非常重要的概念,类可以定义为对于数据以及数据依赖的功能进行的封装。例如,水果在蔬菜中就是一个类,苹果、桃子等水果都是水果类的派生类。水果具有的色、香、味等功能就是水果类的属性,将水果和水果的属性结合起来的,才能称之为水果类。如果水果类只是单纯的具有一个空的水果类定义,则称之为虚类。对象则是类的一个明确化定义,在程序中不能直接使用类的定义,这是任何面向对象程序语言设定的基础。如果想要使用类,则需要事先声明一个对象,该对象被称之为是类的一个“实例化”,通过对象才能使用类的属性和
2、成员函数,正如前面章节中多次使用的那样。本章将系统的介绍类和对象的各种基础概念,第一部分解释和理解类的概念,包括类的实例成员、访问修饰符、构造函数、初始化函数等。第二部分将分析静态成员以及常量和只读字段的差异性,也将讨论类的继承问题。5.1 理解类的概念 在现实世界中,分类是无处不在的。例如,自然界是由有机体和无机体组成,同样,动物、植物都是有机体,也就是有机体的两种分类,而动物又可以区分出很多种,植物也同样如此,这反映在分类的概念上,如图 5-1 所示。第 5 章 类和对象 115 图 5-1 自然界的分类 为了对这些分类的概念有清晰的描述,产生了类的概念。类是对分类的准确描述,通过类的概念
3、可以将每个分类的特征加以区分,产生不同的类别。类别同时也是自然界进化的产物,如果说对事务的直接表述是从微观看问题的话,对类的描述和总结就是从宏观的角度分析事务的性质。面向对象程序设计就是对上述思想的继承,所有的面向对象语言基本上都遵循这个思想,C也不例外。在 C语言中,类是编程中的基本要素。每个函数和变量都要依赖于一个类来实现。例如,在前面的实例程序中,每个命名空间下面都会产生一个与工程项目名称相同的类,诸如 Main()函数等函数都归属于这个类,也可以将其称之为“主”类。如果程序较为复杂,描述的类比较多,则各个类之间的关系是相互平行的,不存在相互之间的归属关系,除非一个类是继承自另外一个类的
4、情况出现。注意 无论一个程序中的类有多少,程序的入口 Main()函数均只有一个,也就是“主”类中的Main()函数,其余类中均不能再出现 Main()函数,其成员函数只能作为简单的成员出现,而不是可直接调用的入口函数。5.2 定义类 C语言中定义一个类是件非常简单的事情。先来看一个简单的类声明:Class Employee private long employerID;类的声明中使用到的关键字是 Class,这个关键字表明了接下来定义的是一个类类型,而不是其余。接着,在 Class 的后面需要定义一个类的名称,类的名称可以随便取,这里使用的是 Employee。在类的内部可以定义类的成员,
5、如成员函数、成员变量等,这里定义的是一个私有的 long 型变量employerID,这个变量是私有的变量,所以只能在 Employee 类的内部使用,如果是 Employee 类的子类希望调用该变量,编译器会禁止这么做。在有些情况下,熟练的 C程序员也会在类的定义之后加上一个分号(;),这样做也是被允许的,如下所示的两段代码是相同的:Class Myclass /Members Class Myclass 116 /Members;5.2.1 类的成员 直观的说,类是由成员构成的。在一个类的定义中,任何东西都可以被定义成类的成员,这些东西包括成员变量和成员函数。下面是可以定义为类的成员的各种
6、类型:?字段:字段用于保存值的成员变量,可以对一个字段应用几个修饰符,这主要取决于对于变量的使用情况。如变量可以应用的修饰符有 static、readonly 和 const 等。?方法:方法是对对象进行操作的实际代码段,各种成员函数和结构类型都可以称之为方法。?特性:特性是一种特殊的方法,从感觉上可以认为特性是一种新的类型,使用者在使用时感觉更像是在使用字段,而不是使用方法,这样可以得到更好的抽象度,特性也被称之为 smart field。?常量:变量的一种类型,指的是值不会改变的变量,与 readonly 有所区别。?索引器:索引器的使用感觉与数组差不多,有时也被称之为 smart arr
7、ay,这种类型使得在操作时就好像是在操作数组一样。例如,ListBox 类拥有用于操作和表示控件数据的字段和方法,但是这个类从概念上说将由其显示的数据数组来定义。索引器通过下标使用实际的对象。?事件:面向对象语言是事件驱动型语言,就是说所有的执行代码都以事件的形式出现。例如,在 Windows 模式下编程,鼠标点击就是一种事件;窗口的放大和缩小也是一种事件,都有相应的事件在背后驱动。?操作符:C#语言通过操作符重载提供了向类中添加标准数学操作符的能力,这样可以写出更直观的代码。5.2.2 访问修饰符 访问修饰符用于指定给定的成员对于自身之外的代码是否可见或者是可访问,这些修饰符称之为访问修饰符
8、,表 5-2 显示了可用的修饰符和其说明。表 5-2 访问修饰符 访问修饰符 说明 Public 可以在类定义和派生类的层次结构之外访问此成员 Protected 在类之外是不可见的,只能在派生类中访问 Private 不能在定义此成员的类之外访问,即使是派生类也不能访问 internal 只在当前编译单元中可见,internal访问修饰符根据代码所在的位置,而不是类在层次结构中的位置决定可见性 注意 C#语言中默认的访问修饰符是 Private,所以如果想使用其余修饰符的特性,需要亲自定义。下面举一个例子说明如何使用这些访问修饰符,如下代码所示:Class Access public int
9、 a;public int b;protected int c;protected int d;int e;第 5 章 类和对象 117Class Binary Access ab=new Access();ab.a;/正确 ab.c;/错误 ab.e;/错误 Class Ceshi:Access Access ab=new Access();ab.a;/正确 ab.c;/正确 ab.e;/错误 在这个例子中,定义了三个类。一个类是 Access,该类包含 5 个成员变量,其中,整型变量 a 和 b被声明为 public 变量,变量 c 和 d 被声明为 protected 变量,变量 e 被
10、声明为默认变量,也即 private 变量。接着定义了类 Binary,在该类中新定义一个 Access 类的对象 ab,跟着使用 ab 调用 Access 的类成员。其中,首先调用了 Access 的类成员 a,因为 a 被声明为 public 变量,所以这里对 a 的调用是正确的。跟着调用成员 c,因为 c 被定义为 protected 变量,所以在类 Access 和其派生类之外是不可以调用该成员的,这种调用方式错误的。同样,调用成员 e 也是错误,因为默认情况下变量默认类型是 private,这是不允许在类 Access 之外被调用的。跟着,从类 Access 派生出了类 Ceshi,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 05 面向对象编程类和对象 面向 对象 编程
限制150内