Java语言程序设计(第三版,清华)第2章

上传人:飞*** 文档编号:34127118 上传时间:2018-02-21 格式:PPT 页数:166 大小:1.42MB
返回 下载 相关 举报
Java语言程序设计(第三版,清华)第2章_第1页
第1页 / 共166页
Java语言程序设计(第三版,清华)第2章_第2页
第2页 / 共166页
Java语言程序设计(第三版,清华)第2章_第3页
第3页 / 共166页
Java语言程序设计(第三版,清华)第2章_第4页
第4页 / 共166页
Java语言程序设计(第三版,清华)第2章_第5页
第5页 / 共166页
点击查看更多>>
资源描述

《Java语言程序设计(第三版,清华)第2章》由会员分享,可在线阅读,更多相关《Java语言程序设计(第三版,清华)第2章(166页珍藏版)》请在金锄头文库上搜索。

1、1,第二章类与对象的基本概念,Java2实用教程-4.2-4.12,JAVA语言程序设计,2,目录,2.1 面向对象的程序设计方法概述2.2 类与对象 2.3 对象初始化和回收 2.4 应用举例 2.6 本章小节,3,2.1 面向对象的程序设计方法概述,面向对象的程序设计与结构化程序设计方法相比,更符合人类认识现实世界的思维方式 已成为程序设计的主流方向涉及的主要概念抽象封装继承多态,4,2.1 面向对象的程序设计方法概述,面向对象的程序设计结构化程序设计结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理 结构化方法是围绕实现处理功能的“过程

2、”来构造系统用户的需求往往基于功能面向对象的方法学认为世界由各种对象(数据和对数据操作)组成,任何事物都是对象,是某个类的实例,复杂的对象可由较简单的对象的某种方式组成 对象具有与现实世界的某种对应关系,正是利用这种关系对问题进行分解,与结构化程序设计方法相比,更符合人类认识现实世界的思维方式,5,对象现实世界中万物皆对象都具有各自的属性,对外界都呈现各自的行为 程序中一切都是对象都具有标识 (identity), 属性和行为(方法)通过一个或多个变量来保存其状态通过方法(method) 实现他的行为,2.1 面向对象的程序设计方法概述(续),6,类将属性及行为相同或相似的对象归为一类类可以看

3、成是对象的抽象,代表了此类对象所具有的共有属性和行为在面向对象的程序设计中,每一个对象都属于某个特定的类类是面向对象程序设计的基本单位,程序运行时由类生产对象,对象之间通过发送消息进行通信类的四大特点:抽象、封装、继承、多态,2.1 面向对象的程序设计方法概述(续),7,2.1.1 抽象,抽象忽略问题中与当前目标无关的方面,以便更充分地注意与当前目标有关的方面如:驾驶员更关心汽车的属性、行为,而汽车的内部构造则不用去关心计算机软件开发中所使用的抽象有过程抽象:将系统的功能划分为若干部分,按照“自顶向下方式逐步求精”,强调功能完成的过程和步骤,隐藏具体实现数据抽象:将系统中需要处理的数据和对数据

4、的操作结合在一起,抽象成不同数据类型。面向对象程序设计主要特点就是采用了数据抽象的方法来构建程序的类及对象,class XiyoujiRenwu float height,weight; String head, ear,hand,foot, mouth; void speak(String s) System.out.println(s); ,public class Clock int hour, minute, second; public void setTime(int newH, int newM, int newS) hour = newH; minute = newM; sec

5、ond = newS; public showTime() System.out.print(hour, minute, second); ,8,例:钟表数据(属性)int Hour; int Minute; int Second;方法(行为)SetTime(); ShowTime();,2.1.1 抽象(续),9,例:人数据(属性)char *name; char *gender; int age; int id;方法(行为)生物行为Eat(), Step(),社会行为Work(), Study(),2.1.1 抽象(续),10,2.1.2 封装,封装是一种信息隐蔽技术,与数据抽象密切相关利

6、用抽象数据类型将数据和基于数据的操作封装在一起用户只能看到对象的封装界面信息,对象的内部细节对用户是隐蔽的外界需要访问类里的数据需要通过接口进行封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需使用设计者提供的消息来访问对象,11,封装的定义清楚的边界所有对象的内部信息被限定在某个边界内接口对象向外界提供的方法,外界可以通过这些方法与对象进行交互受保护的内部实现功能的实现细节不能从类外访问。,2.1.2 封装(续),12,封装的意义在面向对象的程序设计中,类封装了数据及对数据的操作,是程序中的最小模块禁止了外界直接操作类中的数据,模块与模块之间只能通过严格控制的接口进

7、行交互,这使得模块之间的偶合度大大降低,保证了模块具有较好的独立性防止程序员接触不该接触的内容-设计思想允许设计人员对库内部结构进行修改,而不会对用户程序造成影响程序维护和修改较为容易,2.1.2 封装(续),13,2.1.3 继承,继承是指新的类可以获得已有类(称为超类、基类或父类)的属性和行为,称新类为已有类的派生类(也称为子类),体现了面向对象设计方法的共享机制 在继承过程中派生类继承了基类的特性,包括方法和实例变量派生类也可修改继承的方法或增加新的方法,使之更适合特殊的需要有助于解决软件的可重用性问题,使程序结构清晰,降低了编码和维护的工作量,14,单继承任何一个派生类都只有单一的直接

8、父类类层次结构为树状结构多继承一个类可以有一个以上的直接父类类层次结构为网状结构,设计及实现比较复杂Java语言仅支持单继承,2.1.3 继承(续),15,2.1.4 多态,多态相同的操作可作用于多种类型的对象上,并获得不同的结果 操作名的多态:即多个操作具有相同的名字,但接收消息的类型不同(如:对字符和数值型数据的排序;不同形状面积的计算)与继承有关的多态:同一操作被不同对象调用时可能产生不同的行为(如:drivecar 、motorcycle )很好地解决了应用程序方法同名问题,具有行为共享、代码共享的优势,17,2.2 类,类与对象在程序中,对象是通过一种抽象数据类型来描述的,这种抽象数

9、据类型称为类(Class)一个类是对一类对象的描述, 封装了一类对象的状态和方法。类是组成Java程序的基本要素,是用来定义对象的模板。对象是类的具体实例。如:篮球是球类的一个实例、计科学生是学生的一个实例总结:类向用户提供的是一种服务,18,对象是类的具体实例,是类的属性和功能的封装体 对象数据作用于数据的操作对象有两个层次的含义现实世界中对象是客观世界的实体程序设计中对象是一组变量和相关方法的集合。其中变量表示对象的特征,方法表示对象的行为,19,2.2.1 类声明,类的实现包括两部分:类声明和类体。class People “class People”叫做类声明;“People” 是类名

10、。习惯上类名的第一个字母大写,但这不是必须的。,20,2.2.2. 类体,写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“”,“”以及它们之间的内容称做类体,大括号之间的内容称做类体的内容。类体的内容由两部分构:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。,21,class Lander float upper, lower, hight, laderArea; /变量定义部分 float CompArea() /方法定义 laderArea=(upper+lower)*hight/2.0; return laderArea

11、; void ModifyHight(float h) /方法定义 hight=h; ,22,2.3 对象,类是创建对象的模板。当使用一个类创建了一个对象时,我们给出了这个类的一个实例。,类,对象或实例,属性和行为,23,2.3.1.创建对象,创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。一般格式为: 类的名字 对象名字;如: People zhangSang;,24,(2)为声明的对象分配内存 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(默认的构造方法是无参数的),构造方法的名字必须和类名相同。如: zhang

12、Sang=new People();,25,class XiyoujiRenwu /类 XiyoujiRenwu蓝图 float height,weight; String head, ear,hand,foot, mouth; /属性 void speak(String s) /方法 System.out.println(s); class A /测试类中创造实例对象 public static void main(String args) XiyoujiRenwu zhubajie; /声明对象 zhubajie=new XiyoujiRenwu(); /为对象分配内存, /使用new 运

13、算符和默认的构造方法 ,26,声明对象时的内存模型,当用XiyoujiRenwu类声明一个变量,即对象zhubajie时,如例子1中的对象zhubajie:XiyoujiRenwu zhubajie;内存模型如左图所示,此时的对象称为空对象,27,对象分配内存后的内存模型,当系统见到: zhubajie=new XiyoujiRenwu(); 时,就会做两件事: 为height,weight,head,ear,mouth,hand,foot各个变量分配内存,即XiyoujiRenwu类的成员变量被分配内存空间,然后执行构造方法中的语句,确定成员变量的初始值。 new运算符在为变量height,

14、weight,head,ear,mouth,hand,foot分配内存后,将返回一个引用给对象变量zhubajie。 因此,这些被分配了内存的变量便由对象zhubajie进行管理。,28,2.3.2.使用对象,对象不仅可以操作自己的变量改变状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为;对象可以创建多个;通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用;当对象调用方法时,方法中出现的成员变量就是指该对象的成员变量。,29,class People int height; String ear; String eye; void speak(String s) System.out.println(s); ,class A public static void main(String args) People zhubajie; zhubajie=new People(); zhubajie.height=170; zhubajie.ear=两只大耳朵; System.out.println(“身 高:+zhubajie.height); System.out.println(zhubajie.ear); zhubajie.speak(“师傅,咱们别去西天 了,改去月宫吧); ,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号