面向对象程序设计教程

上传人:宝路 文档编号:48000546 上传时间:2018-07-08 格式:PPT 页数:73 大小:909.16KB
返回 下载 相关 举报
面向对象程序设计教程_第1页
第1页 / 共73页
面向对象程序设计教程_第2页
第2页 / 共73页
面向对象程序设计教程_第3页
第3页 / 共73页
面向对象程序设计教程_第4页
第4页 / 共73页
面向对象程序设计教程_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《面向对象程序设计教程》由会员分享,可在线阅读,更多相关《面向对象程序设计教程(73页珍藏版)》请在金锄头文库上搜索。

1、第 4 章 Java对象的生命周期DateDate1 1JavaJava面向对象程序设计教程面向对象程序设计教程主要内容n4.1 对象的声明与创建 4.1.1 基本术语 4.1.2 对象的声明 4.1.3 对象的创建 4.1.4 数组对象的声明和创建n4.2 对象的初始化 4.2.1 成员变量的缺省初始化过程 4.2.2 类成员变量的初始化与静态代码块 4.2.3 实例成员变量的初始化与构造方法 4.2.4 程序健壮性的代价和编码启示 4.2.5 类成员变量与实例成员变量初始化的区别 4.2.6 继承链上相关类的加载顺序以及构造方法链的调用n4.3 对象的使用 4.3.1 多态的使用 4.3.

2、2 对象的比较 4.3.3 对象的传递 4.3.4 内部类的使用n4.4 对象的清除DateDate2 2JavaJava面向对象程序设计教程面向对象程序设计教程4.1 对象的声明与创建DateDate3 3JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:类n类(Class) 可以由用户自己定义的引用类型,它是相 似对象的软件抽象、创建对象的模板。n每一个类都组合了一些能够反映某种类型 属性的字段和反映某种类型动作的方法。 DateDate4 4JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:对象n对象(Object) 是一个人、地址、物品、事件、概念、屏

3、幕显示或者报表,它属于某一个类,对象 拥有自己的属性值和方法调用。n作为类设计的初衷,每一个类都将存在许 多相互独立的对象。n通常我们说一个对象是类的一个实例,一 个对象的生命周期包括声明、创建、使用 和清除四个状态。 DateDate5 5JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:对象引用 n在Java语言中只能引用对象,无法声明一 个直接包含对象的变量。n类类型变量称为引用变量,它们并不直接 保留对象,只是保留对象的地址,而不是 拥有对象本身,通过引用变量即可以得到 一个对象。 n所有对象总是且只是通过内存引用访问的 ,这种方式称为间接寻址。 n对象引用可以在需要的

4、时候自动撤销。 DateDate6 6JavaJava面向对象程序设计教程面向对象程序设计教程类、对象和对象引用的关系示意图 DateDate7 7JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:类变量n类变量必须在类体中声明,并且使用关键字 “static”,因此也称为静态变量。n类变量在类被加载时完成相应的初始化工作。n类变量在一个运行系统中只有一份供整个类和实 例对象共享的值,该值有可能被类(及其子类) 和它们所创建的实例改变,每一次的改变都将影 响到该类(及其子类)和其它实例的调用。n类变量的作用域是整个类。 DateDate8 8JavaJava面向对象程序设计教程

5、面向对象程序设计教程基本术语:实例变量n实例变量在类体中声明但不使用关键字 “static”,也称为非静态变量。n它在对象初始化时完成相应的初始化工作 ,并由某一个对象独自拥有。n实例变量的作用域是某一个类具体创建的 实例对象。 DateDate9 9JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:局部变量n局部变量在某一个语句(如for语句)或代码块( 如方法体)中声明。n当该语句或代码块被调用时,每次都将立即创建 相关的局部变量。n在一个局部变量的声明语句中可能包含有用于初 始化的表达式,但是,该表达式一般要等到这条 声明语句被执行的时候才会进行相应的初始化。 当该语句或

6、代码块被执行完毕退出,相应的局部 变量也将失效。n局部变量的作用域是声明该变量的语句或代码块 。 DateDate1010JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:参数变量n方法和构造方法用于传递信息的参数( Argument)变量和作用于方法体的局部 变量相类似,当方法被调用的时候进行相 应的初始化,当方法体执行结束后失效。 DateDate1111JavaJava面向对象程序设计教程面向对象程序设计教程变量举例n类变量和实例变量都拥有一个缺省初值, 如果某个变量在初始化时没有显式赋值, 那么将被赋予缺省初值。n局部变量则没有缺省初值,如果某个变量 在初始化时没有显式

7、赋值,并且在其后的 语句中试图直接调用,Java编译器将会报 错提示,以保证每个变量都是按照编程人 员的意图进行赋值。 n举例:VariableInit.java DateDate1212JavaJava面向对象程序设计教程面向对象程序设计教程讨论以下程序的问题所在public class InitializationDemo int score = 100;public String isExcellent() String result;if(score=90) result = “Very very good!“;return result; public static void mai

8、n(String args) InitializationDemo obj = new InitializationDemo(); System.out.print(obj.isExcellent(); DateDate1313JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:关键字thisnthis只能用于与实例有关的代码块中,如实例方 法、构造方法、实例初始化代码块或实例变量的 初始化代码块等,this就代表当前或者正在创建 的实例对象的引用,通常可以利用这一关键字实 现与局部变量同名的实例变量的调用。n在构造方法中还可以用this来代表要显式调用的 其它构造方法。n除此以

9、外,使用this关键字都将引发编译时错误 。 DateDate1414JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:关键字supernsuper只能用于与实例有关的代码块中,如实例 方法、构造方法、实例初始化代码块或实例变量 的初始化代码块等,super代表当前或者正在创 建的实例对象的父类,通常可以利用这一关键字 实现对父类同名属性或方法的调用。n在构造方法中还可以用super来代表要调用的父 类构造方法,以实现构造方法链的初始化。n由于Object类为Java语言的根类,已经没有父类 ,因此,如果在Object类中使用了关键字super ,将引发编译时错误。 DateD

10、ate1515JavaJava面向对象程序设计教程面向对象程序设计教程this和super举例nthis和super是在设计类的时候、而不是使 用类及其实例的时候引用。n举例:ThisSuper.java DateDate1616JavaJava面向对象程序设计教程面向对象程序设计教程基本术语:访问权限修饰符 n访问权限控制由强到弱的顺序是public、protected、( default)、private。 npublic访问权限意味着在任何地方,只要能访问到该类, 即可访问到该成员。nprotected访问权限意味着类中的成员允许同一个包或该 类的扩展子类访问。 n缺省的访问权限不需要任

11、何关键字,但通常称为 “Friendly”。它意味着类中的成员只能由同一个包中的其 它类访问。nprivate访问权限意味着该类中的成员只能由自己的成员 调用,而无法被该类以外的其它类访问。n声明局部变量不能包含访问权限修饰符,否则编译时将检 查出错。 DateDate1717JavaJava面向对象程序设计教程面向对象程序设计教程存储对象状态的地方 n寄存器(Register) JVM会根据本身需求适当地分配 。n堆(Heap) 堆是个自由内存区域,常用于动态或临时内存分配,对 类和数组对象提供内存。n栈(Stack) 栈存储方法调用的状态,如方法调用使用的任何局部 变量和方法的操作数。n方

12、法区(Method area) 所有JVM线程共享的公用存储区,存储运 行时常量池、方法数据、字段数据、方法与构造方法字节码等信息。n运行时常量池(Runtime constant pool) 类似于其它编程语言中 的符号表,它包含数值文字和字段常量之类的常量。 n非运行时存储空间 DateDate1818JavaJava面向对象程序设计教程面向对象程序设计教程对象的声明 nJava作为一种强类型语言,声明基本类型或引用 类型都要先指定类型,然后给出相应的变量标识 符: Type Identifier; nfianl型变量只能赋值一次,而且必须被显式赋值 ,否则编译时将有检查错误提示。 fia

13、nl型基本类型变量相当于常量。 对于引用型变量,当声明为“final”时,如果该变量引 用了一个对象,则意味着该变量只能引用该对象,而 该对象的状态仍然可以被改变;如果该变量引用了一 个数组,则意味着该变量只能引用该数组,而该数组 的元素仍然可以被改变。 举例:FinalVariable.javaDateDate1919JavaJava面向对象程序设计教程面向对象程序设计教程对象的创建 n利用关键字new可以创建一个对象,new运算符 为对象分配内存空间,调用该类的一个构造方法 ,实例化一个对象,返回该对象所在内存地址的 一个引用。n该对象引用可以赋给相应类型的对象变量,以后 可以通过该变量操

14、作所引用的对象。n如果创建该对象时没有把引用赋给某个对象变量 ,则该对象将无法再被引用。 n举例:Employee.java DateDate2020JavaJava面向对象程序设计教程面向对象程序设计教程数组对象的声明n数组是一种用来存储相同类型数据项的数 据结构,它由一组具有相同类型和相同变 量名,放在相邻内存位置的元素构成。n数组声明语句: Type Identifier; n在任何数组变量的类型声明中,数组维数 都被忽略了,数组元素的个数是利用new 运算符创建时、而不是在声明时决定的。DateDate2121JavaJava面向对象程序设计教程面向对象程序设计教程数组对象的创建n要创

15、建Java的数组对象,通常使用new运算符进 行实例化。当第1次生成数组时,应指定这个数组 拥有的元素是多少,也就是数组的大小。 n数组对象的长度在创建时限定后,就不能再被改 变。n但可以在任何时候把一个不同长度的新数组赋值 给数组变量Identifier。n数组第一个元素的下标为0,最后一个元素的下标 是(length-1),其中length为数组长度,即数组 元素的个数。n创建数组的大小可以是0,一个长度为0的数组被 称为empty(空)数组。 讨论:“int i=new int0;”和“int i=null;” DateDate2222JavaJava面向对象程序设计教程面向对象程序设计

16、教程数组举例n数组初始化:ArrayInit.java “int i=new int0;”和“int i=null;”区别n数组操作:ArrayManipulation.java Arrays类及其方法n数组复制:ArraycopyExample.java 单层复制与多层复制的实现DateDate2323JavaJava面向对象程序设计教程面向对象程序设计教程4.2 对象的初始化DateDate2424JavaJava面向对象程序设计教程面向对象程序设计教程成员变量的缺省初始化过程 n创建对象时需要对属于对象的成员变量进行初始 化。n无论成员变量是声明在其它方法的前面或者后面 ,其初始化操作总会在方法调用之前合适的时机 执行,并按顺序逐步完成。n与方法中声明的局部变量不一样,为了保证数据 成员变量在使用前被有效初始化,JVM会在类加 载时对所有数据成员变量赋予缺省的初值。 n这一步骤总是首先被执行的,当没有显式对某个 变量赋值时,缺省值的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

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