第10章类和对象

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第10章

类和对象

本章工作任务

➢实现学校类,并描述学校的信息

➢实现教员类,并输出教员的信息

➢实现学生类,并输出学生的信息

本章技能目标

➢掌握类和对象的特征

➢理解封装

➢会创建和使用对象

使用Java理解程序逻辑

本章单词

请在预习时学会下列单词的含义和发音,并

填写在横线处。

1.class:

2.object:

3.OOP:

4.return:

5.encapsulation:

6.null:

7.initial:

8.type:

类和对象

本章简介

在前面章节中,我们学习了程序设计的基本知识和流程控制语句。通过这些内容的学习,大家能够用Java语言进行程序设计,但这些程序的规模都很小,一般只有几十行代码。假设我们要编程解决一个很大的问题,需要写几万行代码,如果按照以前的做法,将这些代码都放在一个Java文件中,可以想象这个文件会非常冗长,而且很难维护。

因此,在下面的课程中,你将看到Java程序设计的另一道风景——面向对象程序设计,英语缩写为OOP。面向对象程序设计是一个里程碑,Alan Kay因为设计了世界上第一个面向对象语言Smalltalk而获得图灵奖。Java之父James Gosling结合Internet背景设计了完全面向对象的Java语言。本章将带领你进入面向对象的世界,学习什么是对象和类,以及如何创建和使用类的对象。

10.1 对象

首先问你一个问题,“世界是由什么组成的?”。如果你是一个化学家,你可能会说,“世界是由分子、原子、离子等这些化学物质组成的”。如果你是一个画家,你可能会说,“世界是由不同的颜色组成的”。不同的人会有不同的回答。但如果你是一个分类学家,你会说,“这个世界是由不同类别的事物组成的”,如图10.1所示。

图10.1 世界的组成

其实,这个问题本身就比较抽象,我们说物以类聚,所以可以说世界是由不同类别的事物构成,如图10.1中所示,世界由动物、植物、物品、人和名胜等组成。动物可以分为脊椎动物和无脊椎动物。脊椎动物又可以分为哺乳类、鱼类、爬行类、鸟类和两栖类。

爬行类又可以分为有足类和无足类……,就这样可以继续分下去。当我们提到某一个分类时,就可以找到属于该分类的一个具体的事物。比如乌龟就属于爬行类中的有足类,

使用Java理解程序逻辑

眼镜蛇就属于爬行类中的无足类。当我们提到这些具体动物时,会在脑海浮现出它们的形象。这些现实世界中客观存在的事物就称为对象。在Java的世界中,“万物皆对象”!

作为面向对象的程序员,我们要站在分类学家的角度去思考问题。根据要解决的问题,将事物进行分类。

说明

分类是人们认识世界的一个很自然的过程,在日常生活中会不自觉地进行分类。比如我们可以将食物分为可食的和不可食的,将交通工具分为车、船、飞机等。分类就是按照事物的性质、特点、用途等作为区分的标准,将符合同一标准的事物归为一类,不同的则分开。比如上文对动物的分类中,根据动物有无脊椎可分为脊椎动物和无脊椎动物,如果根据动物是水生还是陆生,又可分为水生动物和陆生动物。

因此,在实际应用中,我们要根据待解决问题的需要,选择合适的标准或角度对问题中出现的事物进行分类。

10.1.1 身边的对象

现实世界中客观存在的任何事物都可以被看作对象。它可以是有形的,比如一辆汽车;

它也可以是无形的,比如一项计划。因此对象无处不在。

Java是一种面向对象的语言,因此我们要学会用面向对象的思想考虑问题和编写程序。

在面向对象中,对象是用来描述客观事物的一个实体。用面向对象方法解决问题时,首先要对现实世界中的对象进行分析与归纳,找出哪些对象与我们要解决的问题是相关的。下面以商场中的两个对象为例,看看我们身边的对象,如图10.2所示。张浩在超市购物后要刷卡结账,收银员李明负责收款并打印账单。在这个问题中,张浩和李明就是我们所关心的对象。下面选择一个角度对他们分类,比如两人的角色不同,张浩是顾客,而李明是收银员,因此可以说,张浩是“顾客”对象,而李明是“收银员”对象。

图10.2 “顾客”对象和“收银员”对象

既然他们都是对象,如何区分呢?其实每一个对象都有自己的特征,包括静态特征和动态特征。静态特征是可以用某些数据来描述的特征,比如人的姓名、年龄等。动态特征

类和对象

是对象所表现的行为或对象所具有的功能,比如购物、收款等。对上面的例子,我们可以得到表10-1。

表10-1 不同对象的静态特征和行为对照表

对象静态特征静态特征的值动态特征

“顾客”对象姓名张浩购买商品

张浩年龄 20

体重 60kg

“收银员”对象员工号 10001 收款

李明姓名李明打印账单

部门财务部

通过表10-1,我们可以看到,不同类别中的对象具有不同的静态特征和动态特征。如果要将上面的信息存储在计算机中,该如何做呢?

10.1.2 对象的属性和方法

通过超市购物的例子可以看到,正是因为对象拥有了这些静态特征和动态特征才使得他们与众不同。在面向对象的编程思想中,我们把对象的静态特征和动态特征分别称为对象的属性和方法,它们是构成对象的两个主要因素。其中属性是用来描述对象静态特征的一个数据项,该数据项的值即属性值。比如上面例子中,“顾客”对象有一个属性是姓名,属性值是张浩。而方法是用来描述对象动态特征(行为)的一个动作序列。比如“收银员”对象的行为有收款和打印账单,这些都是对象的方法。

在编程中,对象的属性被存储在一些变量里,比如可以将“姓名”存储在一个字符串类型的变量中,将“员工号”存储在一个整型变量中。对象的行为则通过定义方法来实现,比如“收款”、“打印账单”都可以定义为一个方法。

解释

对象:用来描述客观事物的一个实体,由一组属性和方法构成。

10.1.3 封装

顾名思义,封装(Encapsulation)就是把一个事物包装起来,并尽可能隐藏内部细节,如图10.3所示。

图10.3 法拉利跑车

相关文档
最新文档