05_面向对象基础篇.doc
文本预览下载声明
05面向对象基础篇
到目前为止,前面所学习到的Java语法都属于Java语言的最基本功能,其中包括了数据类型和程序控制语句、循环语句、方法、数组和数据结构等。但随着计算机的发展,面向对象的概念也随之孕育而生。类(class)是面向对象程序设计最重要的概念之一,要深入了解Java程序语言,一定要了解面向对象程序设计的观念,从本章将开始学习Java程序中类的设计!
5.1 面向对象程序设计的基本概念
早期的程序设计经历了“面向问题”、“面向过程”的阶段,随着计算机技术的发展,以及所要解决问题的复杂性的提高,以往的程序设计方法已经不能适应这种发展的需求。于是,从20世纪70年代开始,相继出现了多种面向对象的程序设计语言(如图5-1所示),并逐渐产生了面向对象的程序设计方法。面向对象的程序设计涉及到对象、封装、类、继承及多态等几个基本概念。
图5-1 计算机语言的发展过程
5.1.1 对象
面向对象是什么意思呢?
面向对象程序设计是将人们认识世界过程中普遍采用的思维方法应用到程序设计中。对象是现实世界中存在的事物,它们是有形的,如某个人、某种物品;也可以是无形的,如某项计划、某次商业交易。对象是构成现实世界的一个独立单位,人们对世界的认识,是从分析对象的特征入手的。
对象的特征分为静态特征和动态特征两种。静态的特征指对象的外观、性质、属性(如某个人具有名字、身高、体重等);动态的特征指对象具有的功能、行为(如人具有吃饭、睡觉、打人、偷税、漏税)等。客观事物是错综复杂的,但人们总是从某一目的出发,运用抽象分析的能力,从众多的特征中抽取最具代表性、最能反映对象本质的若干特征加以详细研究。
人们将对象的静态特征抽象为属性,用数据来描述,在Java语言中称之为变量;人们将对象的动态特征抽象为行为,用一组代码来表示,完成对数据的操作,在Java语言中称之为方法,。一个对象由一组属性和一组对属性进行操作的方法构成。
5.1.2 类
将具有相同属性及相同行为的一组对象称为类。广义地讲,具有共同性质的事物的集合就称为类。如:博拉图对人作如下定义:人是没有毛能直立行走的动物。在博拉图的定义中“人”是一个类,具有没有毛、直立行走等一些区别于其它事物的共同特征;而张三、李四、王五等一个个具体的人,是人这个类的一个个对象。如图5-2所示:
图5-2 类与对象的关系
在面向对象程序设计中,类是一个独立的单位,它有一个类名,其内部包括成员变量,用于描述对象的属性;还包括类的成员方法,用于描述对象的行为。在Java程序设计中,类被认为是一种抽象数据类型,这种数据类型,不但包括数据,还包括方法。这大大地扩充了数据类型的概念。
类是一个抽象的概念,要利用类的方式来解决问题,必须用类创建一个实例化的类对象,然后通过类对象去访问类的成员变量,去调用类的成员方法来实现程序的功能。这如同“汽车”本身是一个抽象的概念,只有使用了一辆具体的汽车,才能感受到汽车的功能。
一个类可创建多个类对象,它们具有相同的属性模式,但可以具有不同的属性值。Java程序为每一个类对象都开辟了内存空间,以便保存各自的属性值。对象与对象之间也可以相互联系和相互作用,我们把这种方式称为“消息”。 一个消息主要由5部分组成:发送消息的对象、接收消息的对象、消息传递办法、消息内容(参数)、反馈。
面向对象的程序设计有四个主要特征:抽象、封装、继承、多态。
5.1.3 抽象
类的定义中明确指出类是一组具有内部状态和运动规律对象的抽象,抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。面向对象鼓励我们用抽象的观点来看待现实世界,也就是说,现实世界是一组抽象的对象——类组成的。
5.1.4 封装
封装是面向对象的方法所应遵循的一个重要原则。它有两个含义:一是指把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中。另一层含义指“信息隐蔽”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓;或只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节。
封装机制在程序设计中表现为,把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调动其内部的功能方法。
封装机制的另一个特点是,为封装在一个整体内的变量及方法规定了不同级别的“可见性”或访问权限。
5.1.5 继承
继承是面向对象方法中的重要概念,并且是提高软件开发效率的重要手段。首先拥有反映事物一般特性的类,然后在其基础上派生出反映特殊事物的类。如已有的汽车的类,该类中描述了汽车的普遍属性和行为,进一步再产生轿车的类,
显示全部