【精品】java 实用程序设计(西电版第3章 java面向对象的程序设计(可编辑.ppt





《【精品】java 实用程序设计(西电版第3章 java面向对象的程序设计(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】java 实用程序设计(西电版第3章 java面向对象的程序设计(可编辑.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 实用程序设计(西电版)第3章 Java面向对象的程序设计2 2第 3 章 Java 面向对象的程序设计3.1 面向对象的基本思想1.面向对象问题求解基本思想所有编程语言都提供“抽象”方法。也可以说,使用一种编程语言所能解决的问题的复杂程度直接取决于抽象的种类及质量,这里的抽象种类指的是被抽象的对象是什么。早期的汇编语言是对底层机器的轻微抽象。后续发展起来的许多命令式语言(如FORTRAN、BASIC和C语言等)对汇编语言进行进一步的抽象。3 3第 3 章 Java 面向对象的程序设计2.面向对象问题求解方法面向对象方法的特点就在于,在建立问题空间的问题模型和解空间的机器模型的过程中,
2、都使用了“对象”这一概念,使得机器世界中的面向对象模型与现实世界中问题的存在形态非常接近,从而简化了两种模型之间的映射。4 4第 3 章 Java 面向对象的程序设计3.面向对象程序设计的特征Smalltalk语言的发明人Alan Kay曾经将面向对象程序设计方法的特征总结为以下5个方面:(1)一切皆对象。(2)程序是一系列对象的组合,对象间通过消息传递进行联系。(3)每个对象都有自身内存空间,内存空间由其他对象构成。(4)每个对象都有一种类型(type)。(5)同一类型的所有对象都能够接收相同的消息。5 5第 3 章 Java 面向对象的程序设计3.2 面向对象程序设计的基本概念1.对象、类
3、与接口3.1节已经介绍了对象实际上是问题空间中可以明确标识的实体,例如学生、汽车、手机等,这些实体在解空间中存在相应的抽象表示。面向对象程序设计中的对象是以现实世界的对象为模型构造的。每个对象都有自己的标识、状态和行为。6 6第 3 章 Java 面向对象的程序设计7 7第 3 章 Java 面向对象的程序设计8 8第 3 章 Java 面向对象的程序设计3.继承与复用复用是现代程序设计语言都应实现的功能。对于命令式语言,如C语言,复用的对象处于代码和函数的层面,而对于Java语言,复用的对象主要是已定义的类。为了达到复用类的目的,使用的方法主要有组合和继承两种。9 9第 3 章 Java 面
4、向对象的程序设计图3-1 类的继承示例10 10第 3 章 Java 面向对象的程序设计4.多态性1)编译时多态编译时多态通过方法重载(overloading)实现。方法重载是指在一个类中定义多个名称相同但参数不同的方法。参数不同指的是两方面的不同:参数类型不同或参数数量不同。(1)参数类型不同。以java.lang.Math类的max()方法为例,该方法包括如下版本:public static double Math.max(double a,double b);public static float Math.max(float a,float b);public static int M
5、ath.max(int a,int b);public static long Math.max(long a,long b);11 11第 3 章 Java 面向对象的程序设计(2)参数数量不同。以java.lang.String类的split()方法为例,该方法包括如下版本:public String split(String regex);public String split(String regex,int limit);在程序中具体使用其中的哪个方法,是由编译器根据参数数量和类型决定的。虽然多个重载方法的参数列表必须不同,但它们的返回值、修饰符可以相同也可以不同。12 12第 3
6、章 Java 面向对象的程序设计2)运行时多态运行时多态是以继承性为基础的多态性,是在程序运行时动态产生的。有时,多态性也可以专指运行时多态。本节前面部分介绍的继承性主要描述父类与子类之间的关系,而多态性还要求在这种关系的基础上,将一个对象当作它所在类的父类的对象来看待。这种将子类看做它的父类的过程称为向上转型(或上塑造型,upcasting)。“向上”的意思是从类继承层次(如图3-1)的子类(一般在较下方)向父类(一般在较上方)转型。13 13第 3 章 Java 面向对象的程序设计3.3 Java中的对象与类1.类的结构与创建类的基本结构可以表示为如下的类声明格式:14 14第 3 章 J
7、ava 面向对象的程序设计15 15第 3 章 Java 面向对象的程序设计类是创建对象的模板。通过类的构造方法可以创建对象。例如,在例3-1的main()方法中,通过new关键字调用Rectangle类的默认构造方法构造一个对象。对象创建与初始化的进一步介绍见第3.4 节。创建对象之后,通常会对对象的成员变量和方法进行访问。对对象数据的访问和对对象方法的调用通过圆点操作符(.)来完成,该操作符也称为对象成员访问操作符,访问的一般格式形如:对象引用变量.成员变量;对象引用变量.成员方法名(实参列表);16 16第 3 章 Java 面向对象的程序设计17 17第 3 章 Java 面向对象的程
8、序设计18 18第 3 章 Java 面向对象的程序设计19 19第 3 章 Java 面向对象的程序设计2020第 3 章 Java 面向对象的程序设计2.方法的参数传递与返回方法是为了完成特定功能而组合在一起的一组语句。在其他编程语言中,方法称为过程(procedure)或函数(function)。Java中的方法一般分为构造方法和成员方法,声明方式分别见表3-1。我们首先抛开修饰符来看方法的一般组成要素。21 21第 3 章 Java 面向对象的程序设计2222第 3 章 Java 面向对象的程序设计2323第 3 章 Java 面向对象的程序设计2424第 3 章 Java 面向对象的
9、程序设计2525第 3 章 Java 面向对象的程序设计2626第 3 章 Java 面向对象的程序设计在方法定义时,还有以下问题需要特别注意:(1)在成员方法中,如果局部变量或形参的名称与类的成员变量冲突,那么类的成员变量会被隐藏,如果要将成员变量显露出来,应在该方法中使用成员变量时加上关键字“this”。2727第 3 章 Java 面向对象的程序设计2828第 3 章 Java 面向对象的程序设计2929第 3 章 Java 面向对象的程序设计(2)方法的可变长参数列表。类型相同但个数可变的多个参数,可以通过语法“类型名 参数名”声明为方法的可变长参数,如例3-4中的“int point
10、s”。Java将可变长参数当作数组对待。即在进行方法调用时,可变长参数可接受的实参必须是一个数组或者一个实参序列,例如对ratingAverage()方法的第1次调用使用了一个匿名数组作为实参,而对该方法的第2次调用使用了5个整数的序列作为实参。在方法内部,参数名作为一个对数组的引用变量存在。3030第 3 章 Java 面向对象的程序设计31 31第 3 章 Java 面向对象的程序设计3.this关键字实际上,this关键字一般只在方法内部使用,表示对“调用方法的那个对象”的引用。这个引用一般只在实例成员方法中存在,在静态方法中则不存在。当一个对象的实例成员方法被调用时,虚拟机会为这个方法
11、创建一个栈帧,并在栈帧中创建局部变量表,方法的每一个实参值都会有对应的局部变量作为存储空间。在这一过程中,虚拟机还会自动地在局部变量表中开辟一个局部变量,该变量能够存储对当前对象的引用,这一存在于栈帧的局部变量表中的引用变量用this表示。因此,在方法中,需要引用该方法所属类的当前对象时,可以直接用this。3232第 3 章 Java 面向对象的程序设计3333第 3 章 Java 面向对象的程序设计3.4 构造方法与对象初始化1.构造方法的特点与默认构造方法构造方法是一种特殊的方法,具有以下三个特点:(1)构造方法的名称必须与所在类的名称相同。(2)构造方法没有返回值,这与返回值为空(vo
12、id)不同。(3)构造方法在创建一个对象时调用,调用时必须使用new关键字。3434第 3 章 Java 面向对象的程序设计2.对象成员的初始化根据对构造方法调用的要求,对象的实例化可以通过“new 类名(参数列表)”完成。对象的实例化过程分为3个阶段:首先,为对象分配存储空间;其次,对对象的成员变量进行初始化;第三,返回对象的引用。3535第 3 章 Java 面向对象的程序设计3636第 3 章 Java 面向对象的程序设计3737第 3 章 Java 面向对象的程序设计在实例化的第2阶段,对对象的成员变量的初始化又分为多步完成。我们定义另一个类Rectangle2来说明这些步骤,见例3-
13、6,相应的初始化过程中的内存变化如图3-2所示。3838第 3 章 Java 面向对象的程序设计图3-2 对象成员变量初始化过程中的内存变化3939第 3 章 Java 面向对象的程序设计4040第 3 章 Java 面向对象的程序设计41 41第 3 章 Java 面向对象的程序设计综上所述,当我们希望对类中的引用类型成员变量初始化为非null引用时,可以在代码中的以下位置进行:(1)引用变量声明处进行显式初始化;(2)在类的构造方法中;(3)在一般方法中,且在使用对象之前,这种情况称为“惰性初始化”,如果程序不需要每次都生成对象,那么这种惰性初始化可以减少额外的开销;(4)在实例初始化程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 【精品】java 实用程序设计西电版第3章 java面向对象的程序设计可编辑 java 实用程序 设计 西电版第 面向 对象 程序设计 编辑

限制150内