郑莉版JAVA复习
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
抽象类声明的语法形式为
abstract class Number { ... }
33
JAVA语言程序设计
清华大学 郑莉
抽象方法
声明的语法形式为
public abstract <returnType> <methodName>(...);
仅有方法头,而没有方法体和操作实现 具体实现由当前类的不同子类在它们各自 的类声明中完成
类名 变量名
– 声明一个引用变量时并没有对象生成
对象的创建
– 生成实例的格式: new <类名>() 其作用是:
在内存中为此对象分配内存空间 返回对象的引用(reference ,相当于对象的存储地址)
9
JAVA语言程序设计
清华大学 郑莉
数据成员
类变量
– 也称为静态变量,声明时需加static修饰符,类变量在整 个类中只有一个值 – 类初始化的同时就被赋值 – 适用情况
类型 同一类 同一包中的 子类 同一包中的 非子类 不同包中的 子类 不同包中的 非子类
private yes
无修饰
protected yes
public yes
yes
no
no no no
yes
yes no no
yes
yes yes no
yes
yes yes yes
16
JAVA语言程序设计
清华大学 郑莉
– 也可以包含基本数据类型的数据成员,但它们都默认为static和 final
清华大学 郑莉
第四章 类的重用
类的继承 Object类 终结类与终结方法 抽象类 清华大学 郑莉
类的继承
一种由已有的类创建新类的机制 Java只支持类的单继承 基类(超类)是被直接或间接继承的类 派生类(子类 )是继承其他类而得到的类 子类对象与父类对象存在“IS A”(或“is kind of”)关 系 派生类的对象包含着一个基类类型的子对象 继承的语法
2.3 对象初始化和回收
对象初始化
– 系统在生成对象时,会为对象分配内存 空间,并自动调用构造方法对实例变量 进行初始化
对象回收
– 对象不再使用时,系统会调用垃圾回收 程序将其占用的内存回收
17
JAVA语言程序设计
清华大学 郑莉
构造方法
若不定义构造方法系统提供的默认构 造方法 可以定义多种重载形式的构造方法 可以使用this关键字在一个构造方法 中调用另外的构造方法
捕获处理异常
22
JAVA语言程序设计
清华大学 郑莉
异常处理的语法形式
try { statement(s) } catch (exceptiontype name) { statement(s) } finally { statement(s) }
23
JAVA语言程序设计
清华大学 郑莉
异常分类
非检查型异常
不能覆盖的方法
– 基类中声明为final的终结方法 – 基类中声明为static 的静态方法
调用被覆盖的方法
– super.overriddenMethodName();
30
JAVA语言程序设计
清华大学 郑莉
Object 类
所有类的直接或间接父类,处在类层次最 高点,包含了所有Java类的公共属性 主要的方法如下
31
JAVA语言程序设计
清华大学 郑莉
终结类与终结方法
被final修饰符修饰的类和方法 终结类不能被继承
终结方法不能被当前类的子类重写
32
JAVA语言程序设计
清华大学 郑莉
抽象类
抽象类
– 代表一个抽象概念的类 – 没有具体实例对象的类,不能使用new方法进 行实例化 – 类前需加修饰符abstract – 可包含常规类能够包含的任何东西,例如构造 方法,非抽象方法 – 也可包含抽象方法,这种方法只有方法的声明, 而没有方法的实现
清华大学 郑莉
类的声明
声明形式
[public] [abstract | final] class 类名称 [extends 父类名称] [implements 接口名称列表] { 变量成员声明及初始化; 方法声明及方法体; }
8
JAVA语言程序设计
清华大学 郑莉
对象的声明和创建
对象的声明
– 格式
– 不能期望程序捕获的异常(例如数组越界,除零 等) – 继承自RuntimeException – 在方法中不需要声明,编译器也不进行检查
检查型异常
– 其他类型的异常 – 如果被调用的方法抛出一个类型为E的检查型异 常,那么调用者必须捕获E或者也声明抛出E (或者E的一个父类),对此编译器要进行检查
抽象类可以包含抽象方法
只有抽象类才能具有抽象方法
34
JAVA语言程序设计
清华大学 郑莉
类的组合
Java的类中可以有其他类的对象作为 成员,这便是类的组合 可以使用“has a”语句来描述这种关 系 组合与继承的比较
– “包含”关系用组合来表达 – “属于”关系用继承来表达 组合与继承的结合
清华大学 郑莉
流程控制
顺序结构 选择结构
– if语句(二路选择结构) – switch语句(多路选择结构)
循环结构
– for语句
– while语句 – do-while语句
21
JAVA语言程序设计
清华大学 郑莉
异常处理
Method4 Method3
调 用 探测抛出异常
Method2 Method1
24
JAVA语言程序设计
清华大学 郑莉
方法重载
一个类中名字相同的多个方法 这些方法的参数必须不同,Java可通 过参数列表的不同来辨别重载的方法
– 或者参数个数不同 – 或者参数类型不同
返回值类型可以相同,也可以不同 重载的价值在于它允许通过使用一个 方法名来访问多个方法
25
JAVA语言程序设计
28
JAVA语言程序设计
清华大学 郑莉
属性的隐藏
子类中声明了与父类中相同的成员变 量名,则从父类继承的变量将被隐藏 当子类执行继承自父类的操作时,处 理的是继承自父类的变量,而当子类 执行它自己声明的方法时,所操作的 就是它自己声明的变量 访问父类子对象中的属性:super.属 性
29
JAVA语言程序设计
– – – – – –
public final Class getClass() public String toString() public boolean equals(Object obj) protected Object clone( ) Public int hashCode() protected void finalize() throws Throwable
18
JAVA语言程序设计
清华大学 郑莉
内存回收
内存回收技术
– 当一个对象在程序中不再被使用时,Java运行时系统通过垃 圾收集器周期性地释放无用对象所使用的内存
– 进行垃圾回收前,自动调用finalize()方法
垃圾收集器
– 自动扫描对象的动态内存区,对不再使用的对象做上标记以 进行垃圾回收 – 作为一个线程运行
12
JAVA语言程序设计
清华大学 郑莉
类的组织——包
是一组类的集合
– 可以包含若干个类文件,还可包含若干个包
包的作用
– 将相关的源代码文件组织在一起 – 利用包来划分名字空间,便可以避免类名冲突 – 提供包一级的封装及存取权限
包的声明
– 命名的包:使用小写字母,名称 “独一无二” – 默认包(未命名的包)
Java 语言程序设计
复
习
第1-8章
JAVA语言程序设计
清华大学 郑莉
第一章
Java开发环境 Java语言的特点 基础语法
2
JAVA语言程序设计
清华大学 郑莉
Java开发环境
Java程序编译执行的过程 Java APIs Java VM Java版本及不同称谓
– JDK 1.1以前 – JDK 1.2开始——Java 2
13
JAVA语言程序设计
清华大学 郑莉
类的组织——包(续)
编译单元与类空间
– 一个Java源代码文件称为一个编译单元:
所属包的声明(省略,则属于默认包)
包,用于导入外部的类(Java编译器 为所有程序自动引入包ng) 类和接口的声明
Import
– 一个编译单元中只能有一个public类,该 类名与文件名相同,编译单元中的其他 类往往是public类的辅助类,经过编译, 每个类都会产一个class文件
4
JAVA语言程序设计
清华大学 郑莉
基础语法
程序结构 基本数据类型与表达式 数组
5
JAVA语言程序设计
清华大学 郑莉
第二章
面向对象的程序设计方法 类与对象 对象初始化和回收
6
JAVA语言程序设计
清华大学 郑莉
面向对象的程序设计方法
抽象 封装 继承 多态
7
JAVA语言程序设计
J2SE, J2EE, J2ME 1.2-1.4 J2SE 5.0—>Java SE 5 J2EE 5.0—>Jave EE 5
……
3
– JDK 1.5=JDK 5.0=Java 5
JAVA语言程序设计
清华大学 郑莉
程序分类、相关技术
Application Applet Servlet JSP JavaScript(不是Java语言)
类中所有对象都相同的属性 经常需要共享的数据 系统中用到的一些常量值
– 访问形式
<类名 | 实例名>.<类变量名>
实例变量
– 没有static修饰的变量,用来存储所有实例都需要的属性 信息,不同实例的属性值可能会不同
– 访问形式
<实例名>.<实例变量名>
10
JAVA语言程序设计
清华大学 郑莉
class childClass extends parentClass { //类体 }
27
JAVA语言程序设计
清华大学 郑莉
继承时的构造方法
有继承时的构造方法遵循以下的原则
– 子类不能从父类继承构造方法 – 好的程序设计方法是在子类的构造方法 中调用某一个父类构造方法,调用语句 必须出现在子类构造方法的第一行,可 使用super关键字 – 如子类构造方法的声明中没有明确调用 父类构造方法,则系统在执行子类的构 造方法时会自动调用父类的默认构造方 法(即无参的构造方法)
JAVA语言程序设计
清华大学 郑莉
方法成员
实例方法
– 表示特定对象的行为 – 声明时前面不加static修饰符 – 使用时需要发送给一个类实例
类方法
– 也称为静态方法,表示类中对象的共有行为
– 声明时前面需加static修饰符
– 不能被声明为抽象的 – 类方法可以在不建立对象的情况下用类名直接 调用,也可用类实例调用
数据成员(续)——final修饰符
实例变量和类变量都可被声明为final final实例变量必须在每个构造方法结 束之前赋初值,以保证使用之前会被 初始化 final类变量必须在声明的同时初始化 基本类型final成员一旦被初始化其值 不可变 final的引用,其引用不能改变
11
类 与 对 象
清华大学 郑莉
方法覆盖
方法覆盖
– 如果子类不需使用从父类继承来的方法的功能,则可以 声明自己的同名方法,称为方法覆盖 – 覆盖方法的返回类型,方法名称,参数的个数及类型必 须和被覆盖的方法一摸一样 – 只需在方法名前面使用不同的类名或不同类的对象名即 可区分覆盖方法和被覆盖方法 – 覆盖方法的访问权限可以比被覆盖的宽松,但是不能更 为严格
14
JAVA语言程序设计
清华大学 郑莉
类的访问控制
类的访问控制
– 类的访问控制只有public(公共类)及无 修饰符(缺省类)两种 – 访问权限符与访问能力之间的关系
类型 同一包中的类 不同包中的类 无修饰 yes no public yes yes
15
JAVA语言程序设计
清华大学 郑莉
类成员的访问控制
finalize()方法
– 在类ng.Object中声明,因此 每一个类都有该方法
– 用于释放系统资源,如关闭打开的文件或socket等
19
JAVA语言程序设计
清华大学 郑莉
第三章 类的方法
方法的控制流程 异常处理
方法的重载(overloading)
20
JAVA语言程序设计
– 将组合与继承结合使用,创建一个更复杂的类
35
JAVA语言程序设计
清华大学 郑莉
第 5 章 接口与多态
接口 塑型 多态 内部类
36
JAVA语言程序设计
清华大学 郑莉
接口
接口
– 是一个“纯”抽象类,它只提供一种形式,并不提供实现。 – 允许创建者规定方法的基本形式:方法名、参数列表以及返回 类型,但不规定方法主体