Java程序设计技术第6章 (第二版)

合集下载

Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案

Java程序设计案例教程(第二版)周怡、张英主编。第6章 习题答案
return "0";
方法的覆盖:在子类中重定义父类的同名方法。方法覆盖表现为父类与子类之间的方法的多态性,其中形参表、返回值类型也必须相同,且子类方法不能有比父类方法更严格的访问权限。可以为编译时多态性或运行时多态性。
6.什么叫构造方法?构造方法的作用是什么?
答:构造方法是对象实例化时完成对象及其成员变量的初始化时所调用的一种特殊的方法。
}
}
//类Draw_Clean继承抽象类Draw_Eraser并覆盖抽象方法getEraser()
classDraw_CleanextendsDraw_Eraser
{
publicvoidgetEraser()
{
System.out.println("橡皮擦选项:选择橡皮擦>>>选中需要清除内容>>>确定");
运行时多态性:在编译时不能确定、只有在运行时才能确定执行多个同名方法的哪一个。
五、编程题
1.考虑设计一个绘图工具的面向对象描述,写出代码框架,充分应用抽象、多态等方法。
classDraw_Graph
{
doubleline;
doublecircle;
//定义构造方法
publicDraw_Graph()
* @return计算结果
*/
public Complex multiply(Complex complex){
double x = this.x * complex.x - this.y * complex.y;
double y = this.y * complex.x + this.x * complex.y;
return new Complex(x,y);

最新java大学实用教程(第二版附课后练习答案第6章字符串与正则表达式ppt课件

最新java大学实用教程(第二版附课后练习答案第6章字符串与正则表达式ppt课件

System.out.println(date.toString());
System.out.println(stu.toString());
System.out.println(tv.toString());
}
}
class Student{
String name;
double score;
Student(String name,double score){
有时,我们需要将数字转化为字符串,可以使用String 类的下列类方法:
public String valueOf(byte n) public String valueOf(int n) public String valueOf(long n) public String valueOf(float n) public String valueOf(double n) 我们可以使用Long类中的下列方法,得到整数的各种进制数的 表示。
String 类还提供了一个方法: public char[] toCharArray() 字符串对象调用该方法可以初始化一个字符数组,该 数组的长度与字符串的长度相等,并将字符串对象的 全部字符复制到该数组中。 例子6_4在这个例子中用户在键盘上输入字符串,程序实 现将其加密然后输出的目的。
返回
5.字符串与基本数据的相互转化 ng包中的Integer类调用其类方法: public static int parseInt(String s) 可以将“数字”格式的字符串,如“12387”,转化为int型 数据。 类似地,使用ng包中的Byte、Short、Long、Float、 Double类调相应的类方法: public static byte parseByte(String s) public static short parseShort(String s) public static long parseLong(String s) public static double parseFloat(String s) public static double parseDouble(String s) 可以将“数字”格式的字符串,转化为相应的基本数据类型。

java语言程序设计第6章

java语言程序设计第6章
同父类的异常统一处理,也可区分不同的异常分别处理,使用非常灵活。
第6章 常见错误和异常处理
6.2.2 Exception类
Java语言的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定 的运行错误。所有的Java异常类都是系统类库中的Exception类的子类 。 Exception类有若干子类,每一个子类代表了一种特定的运行时错误。这些 子类有些是系统事先定义好并包含在Java类库中的,称为系统定义的运行异 常。 系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作 系统错误甚至是整个系统的瘫痪,所以需要定义异常类来特别处理。 常见的系统定义异常如下: (1)ArithmeticException:数学错误。 (2)ArrayIndexOutOfBoundsException:数组下标越界使用。 (3)ClassNotFoundException:未找到欲使用的类。 (4)FileNotFoundException:未找到指定的文件或目录。
第6章 常见错误和异常处理
6.2.4 多异常的处理
如果所有的catch语句都不能与当前的异常对象匹配,则说明当前方法不能 处理这个异常对象,程序流程将返回到调用该方法的上层方法。如果这个上 层方法中定义了与所产生的异常对象相匹配的catch语句,流程就跳转到这 个catch语句中,否则将继续回溯更上层的方法。 如果所有的方法中都找不到合适的catch语句,则由Java运行系统来处理这 个异常对象。此时通常会中止程序的执行,退出虚拟机返回操作系统,并在 标准输出上打印相关的异常信息。 如果try语句体中所有语句的执行都没有引发异常,则所有的catch语句体都 会被忽略而不予执行。 catch语句体中的语句应根据异常的不同而执行不同的操作,比较通用的操 作是打印异常和错误的相关信息,包括异常名称、产生异常的方法名等。 由于异常对象与catch语句的匹配是按照catch语句的先后排列顺序进行的, 所以在处理多异常时应注意认真设计各catch语句的排列顺序。一般来说, 将处理较具体和较常见的异常的catch语句应放在前面,而可以与多种异常 相匹配的catch语句应放在较后的位置。此外,不能将子类异常的catch语句 放在父类的后面,否则在编译时会产生错误。

Java编程基础及应用(第2版)教学课件第6章 类的继承与多态性

Java编程基础及应用(第2版)教学课件第6章 类的继承与多态性

6.1.1 引言
下图为一个继承的实例:
6.1.2 继承的概念
• 继承是从巳有的类中派生出新的类,新的类拥有已有 类的数据属性 和行为,并能扩展新的数据属性和行为。换句话说,继承就是在已经 存在的类的基础上再扩展新的类。
• 已经存在的类称为父类、超类或者基类。新产生的类称为子类或派生 类。子类拥有父类的所有特性。当然,也可以在子类中添加新的方法 和成员变量,这些新添加 的方法和成员支量仅仅属于子类。
• 继承分为单继承和多继承。单继承是指一个子类最多只能有一个父类 。多继承是指一个子类可以有两人以上的父类。由于多继承会带来二 义性,在实际应用中应尽 量使用单继承。
6.1.3 继承的实现
■关键字(extends)
继承通过关键字extends实现。如果使用默认的extends子句,则该
类为ng.Object的子类。子类可以继承父类中访问权限为public、
■继承的特点: (1) 提供多继承机制。从理论上说,一个类可以是多个一般类的子类,它
可以从密个一般类中继承属性与方法,这便是多继承。Java出于安全性和 可靠性的考虑,仅支持单继承,而使用接口机制来实现多继承。
(2) 继承通过增强一致性来减少模块间的接口和界面, 大大增加了程序 的易维护性。
6.1.5 继承的特点与优点
Child c = new Child(); System.out.println(c.add(4,"3")); }
6.2.2 方法覆盖和重载
■方法重载:是指在同一个类中,定义多个名称相同,但参数个数或 类型不同的方法,程序中的对象根据参数的个数或者类型,调 用相对应的方法。
■例:StudentOverload类定义构造函数和get()方法,并重载了这两个方 法,sol、so2对象根据这两个方法的参数个数或类型调用相应的 方法。

Java程序设计实用教程(第2版)第6章_接口与多态

Java程序设计实用教程(第2版)第6章_接口与多态

2017/8/16
9
§6.2.2 接口的多态性 把实现接口的类的实例的引用赋值给接口变量后, 该接口变量就可以回调类重写的接口方法。 由接口产生的多态就是指不同的类在实现同一个接 口时可能具有不同的实现方式,那么接口变量在回调接 口方法时就可能具有多种形态。
2017/8/16
10
体操比赛计算选手成绩的办法是去掉一个最高分和最低分 后再计算平均分,而学校考查一个班级的某科目的考试情 况时,是计算全班同学的平均成绩。在下面的例6-4中, Gymnastics类和School类都实现了ComputerAverage接口,但 实现的方式不同。程序运行效果如图6.7所示。
如果一个类实现了某个接口,那么这个类必须重写该接口 的所有方法。 Java提供的接口都在相应的包中,通过import语句不仅可 以引入包中的类,也可以引入包中的接口,例如, import java.io.*; 2017/8/16
4
class Dog extends Animal implements Eatable,Sleepable
接口回调是指:可以把实现某一接口的类创建的对象的引 用赋给该接口声明的接口变量中,那么该接口变量就可以调用被 类重写的接口方法。 实际上,当接口变 量调用被类重写的接口 方法时,就是通知相应 的对象调用这个方法。
2017/8/16 8
例6-3
Example6_3.java 例6-3使用了接口的回调技术。
《Java程序设计实用教程(第2版)》 第 6章
接口与多态
配合例子源代码一起使用
2017/8/16
1
导读
2017/8/16
2
§6.1
接口
Java 不支持多继承性,即一个类只能有一个父类。 单继承性使得Java简单,易于管理和维护。 为了克服 Java单继承的缺点,Java使用了接口,一 个类可以实现多个接口。

JAVA程序设计技能教程第6章

JAVA程序设计技能教程第6章

public static void main(String[] args){ Chinese people=new Chinese(); people=new Chinese("张三"); people=new Chinese("张三",20); } }
综上所述,super用来访问父类的成员变量和成员方法的引用 格式有以下几种: (1)super.成员变量 (2)super.(参数列表) (3)super. 成员方法([参数列表])
上面的两个类可以简写成下面的代码: 【例6-2】简写的学生类。 public class Person { public String name; public int age; public String getInfo(){...} } public class Student extends Person{ public String school; public String study(){...} }
public class DemoSuper extends Person{ public void print(){ System.out.println("DemoSuper:"); super.print(); } public static void main(String[] args){ DemoSuper test=new DemoSuper(); test.setName("张三"); test.setAge(20); test.print(); }
【例6-7】在对象初始化的时候自动调用this和super: class Person{ public static void print(String s){ System.out.println(s); } Person(){ print("A Person."); } Person(String name){ print("A person name is:"+name); } }

Java程序设计第2版第六章.ppt

Java程序设计第2版第六章.ppt
第6章 类与对象
2020/4/6
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/4/6
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中, 类(Class)和对象(Object)是面向对象程序设计方 法中最核心概念。
• 例:
变量 name--鱼名称
color--鱼颜色 函数
setValue() --赋值 name、color
output()-- 显示 name、color
分别用“面向过程”、“面向对象” 编程思想实 现。
2020/4/6
5
1. 面向过程源程序: Fish.c
# include <stdio.h>
//属性变量color--描述鱼的颜色
void setValue (String n, String c ) //方法setValue :给成员变量赋值
{ name=n;
color=c;
}
void output( )
//方法output :显示成员变量
{ System.out.println (name); System.out.println (color);
char name[20]=“ ”; char color[20]=“ ”; main() { void setValue(char n[], char c[]);

Java语言程序设计教程(第二版)翁 凯 肖少拥 王行言-第6章--继承与多态

Java语言程序设计教程(第二版)翁  凯  肖少拥  王行言-第6章--继承与多态

第6章继承与多态思考题与习题一、概念思考题1.父类和子类之间的关系是怎样的?解答:是继承关系,子类继承父类。

有public,protected,private三种继承方式。

2.继承如何支持了软件重用?解答:在继承中,新的类是基于一个已经存在的基础雷尔定义出来的,通过继承,新的类自动获得了基础类中的所有成员,包括成员变量、方法和各种访问属性的成员,无论时public还是private。

在继承后,程序员还可以加入自己定义的新的成员,包括变量和方法。

通过继承来定义新的类,远比从头开始写一个新的类要简单快捷和方便,以上便是对代码的重用。

3.protected的含义是什么?解答:含义:只有包内其他类、自己和子类可以访问。

4.super有什么作用?解答:super表示超类或父类,其只能在子类中使用,可以访问父类中的实例变量、实例方法、还可以访问父类的构造方法(这个super()必须写在构造方法的第一行,而且每个构造方法只能有一个super())。

5.interface与class有什么异同之处?解答:相同点:1)都可以定义抽象方法;2)都不能实例化对象;3)定义的抽象方法都需要被重写;4)都可以定义public static方法, public static final常量。

不同点:1)意义不同抽象类是对事物更高层级的抽象;接口是对功能的封装。

2)定义方式不同抽象类用 abstract class定义;接口用interface定义。

3)内容不同抽象类中除了抽象方法外,还可以定义构造方法等普通类中定义的所有成员。

接口除了public abstract方法, public static final常量 , public static 方法, public default方法等这四个内容外, 不能定义构造方法等内容4)使用方式不同抽象类需要被子类extends继承;接口需要被实现类implements实现。

5)类只支持单继承, 接口支持多继承。

Java第2版第6章.ppt

Java第2版第6章.ppt
默认的友元访问控制符,在同一个包中的其他类可以访问此方法,而其他包 中的类不能访问该方法。 最终修饰符。指定该方法不能被重载。
静态修饰符。指定不需要实例化一个对象就可以激活的方法。
同步修饰符。在多线程程序中,该修饰符用于在运行前,对它所属的方法加 锁,以防止其他线程访问,运行结束后解锁。
语句序列; return [表达式]; } …… }
2020/11/2
11
其中class前面方括号“[]”中的类修饰符是可 选项,用来说明类的特殊性质,类修饰符分为访问控 制符、抽象类说明符、友元类说明符和最终类说明符 四种。各修饰符的含义如表6.1所示。
2020/11/2
12
表6.1类修饰符的含义
第6章 类与对象
陈国君
2020/11/2
1
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
2020/11/2
2
在前面的章节中,对Java的简单数据类型、 数组、运算符和表达式及流程控制的方法作了详细 的介绍。从本章开始将介绍面向对象的程序设计方 法。面向对象的编程思想是力图使在计算机语言中 对事物的描述与现实世界中该事物的本来面目尽可 能的一致。所以在面向对象的程序设计中,类 (Class)和对象(Object)是面向对象程序设计方法 中最核心的概念。
2020/11/2
16
表6.3成员方法修饰符的含义
修饰符 public private protected friendly final static synchronized
含义
公共访问控制符。指定该方法为公共的,它可以被任何对象的方法访问。

Java语言程序设计(第2版)丁振凡第6章

Java语言程序设计(第2版)丁振凡第6章
Java语言程序设计(第2版)
继承的概念
• 父类或超类。实际上是所有子类 的公共域和公共方法的集合 • 子类,父类的特殊化,是对公共域 和方法在功能、内涵方面的扩展 和延伸 ,祖先类的所有成员均将 成为子类拥有的“财富” • Object类是所有类的祖先
Java语言程序设计(第2版)
6.1.1 Java继承的实现
Java语言程序设计(第2版)
6.2.3 访问继承的成员
(1)如果子类中定义了与父类同名的属性,在子类中将隐 藏来自父类的同名属性变量。通过子类的引用变量访问对 象时无论属性和方法优先考虑子类新定义的。
(2)但父类引用变量引用子类对象带来了问题
• 对象执行方法时由实际对象的类型决定,而不是引 用变量类型 ; • 访问属性时则由引用类型决定,因为编译程序在分 析程序时是基于类型来决定访问哪个属性变量 ; • 静态成员的访问是基于引用变量的类型,而不是对 象类型.
Java语言程序设计(第2版)
关于方法覆盖有以下问题值得注意:
方法名、参数列表、完全相同才会产生方法覆盖;
返回类型通常也要一致,只有返回类型为引用类型时, 允许子类方法的返回类型是父类方法返回类型的子类 型。其他情形导致类型不一致时编译将指示错误。 覆盖不能改变方法的静态与非静态属性。子类中不 能将父类非静态方法定义为静态方法,反之也一样。 不允许子类方法的访问修饰符比父类有更多的限制。 例如:子类不能将父类的public方法定义为 protected方法。但可以将父类的private方法在子类 中重新定义为public方法. final方法不能被覆盖。
• 如果将test(int x)方法注释掉,则调用test(5)如何?
• 以上3个方法中,如果只将test(double x)方法注释掉,程序 能编译通过吗?

Java第2版第6章

Java第2版第6章

6.3.2 对象的使用
创建新的对象之后,就可以对对象的成员进 行访问。通过对象来引用对象成员的格式如下: <对象名>.<对象成员> 在对象名和对象成员之间用“.”相连,通 过这种引用可以访问对象的成员。 例如,若将对象volu的半径赋值为2.8,把 高赋值为5,其代码为: volu.radius=2.8; volu.height=5;
所以在图6.3中所示的对象内存状态图中,成员 变量radius的初始值为0。
表6.4 成员变量的初始值
成员变量类型 byte short int long 0 0 0 0L 初始值
float
double char boolwan 所有引用类型
0.0F
0.0D ‘\u0000’(表示为空) false null
对象是整个面向对象程序设计的理论基础由于面向对象程序中使用类来创建对象所以可以将对象理解为一种新型的变量它保存着一些比较有用的数据但可以要求它对自身进行操作
第6章 类与对象
通过本章的学习,主要掌握以下知识点:
类的基本概念 对象的创建与使用 对象的使用 成员的调用
本章的重点:
创建类
本章的难点:
类修饰符 成员数量与成员方法修饰符
下面定义前面叙述过的圆柱体类如下: class Cylinder //定义圆柱体类Cylinder { double radius; //声明成员变量radius int height; //声明成员变量height double pi=3.14; //为数据成员赋初值 void area( ) //定义成员方法area(),用来计算底面积 { System.out.println(“圆柱底面积=”+ pi*radius* radius); } void volume( ) //定义成员方法volume (),用来计算体积 { System.out.println(“圆柱体体积=”+((pi*radius* radius)*height); } }

Java语言程序设计(第2版)第1-6章 课后习题答案解析

Java语言程序设计(第2版)第1-6章 课后习题答案解析

第1章Java语言概述选择题1-1 在下列概念中,Java语言只保留了(B)A. 运算符重载B. 方法重载C. 指针D. 结构和联合1-2 下列关于Java语言特性的描述中,错误的是(D)A. 支持多线程操作B. Java程序与平台无关C. Java和程序可以直接访问Internet上的对象D. 支持单继承和多继承1-3 下列关于Java Application程序在结构上的特点的中,错误的是(C)A. Java程序是由一个或多个类组成的B. 组成Java程序的若干个类可以放在一个文件中,也可以放在多个文件中C. Java程序的文件名要与某个类名相同D. 组成Java程序的多个类中,有且仅有一个主类1-4 Java程序经过编译后生成的文件的后缀是(C)A. .objB. .exeC. .classD. .java1-5 下列关于运行字节码文件的命令行参数的描述中,正确的是(A)A. 第一个命令行参数(紧跟命令字的参数)被存放在args[0]中B. 第一个命令行参数被存放在args[1]中C. 命令行的命令字被存放在args[0]中D.数组args[]的大小与命令行参数的个数无关判断题1-1JavaC++的语言之前问世的。

(错)1-2Java语言具有较好的安全性和可移植性及与平台无关等特性。

(对)1-3Java语言中取消了联合的概念,保留了结构概念。

(错)1-4Java语言中数据类型占内在字节数与平台无关。

(对)1-5Java语言中可用下标和指针两种方式表示数组元素。

(错)1-6Java语言的源程序不是编译型的,而是编译解释型的。

(对)1-7操作系统中进程和线程两个概念是没有区别的。

(错)1-8Java语言既是面向对象的又是面向网络的高级语言。

(对)1-9Java程序分为两大类:一类是Application程序,另一类是Applet程序。

前者又称Java应用程序,后者又称为Java小应用程序。

(对)1-10Java Application程序是由多个文件组成的,其中可以有也可以没有主文件。

Java程序设计精编教程第2版习题解答

Java程序设计精编教程第2版习题解答

习题解答习题一(第1章)1.2.需3个步骤:1) 用文本编辑器编写源文件。

2) 使用编译源文件,得到字节码文件。

3) 使用解释器运行程序。

3. :\\\\;.;4. B5. 源文件的扩展名是,字节码的扩展名是。

6.D 。

习题二(第2章)1.2. { ( b) {;}( b) {;}}{() {("老师好");}}{( []) {();((12,236));((234,120));();();}}3.如果源文件中有多个类,但没有类,那么源文件的名字只要和某个类的名字相同,并且扩展名是就可以了,如果有一个类是类,那么源文件的名字必须与这个类的名字完全相同,扩展名是。

4.行尾风格。

习题三(第3章)1.用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。

标识符由字母、下划线、美元符号和数字组成,第一个字符不能是数字。

不是标识符。

2.关键字就是语言中已经被赋予特定意义的一些单词,不可以把关键字作为名字来用。

不是关键字。

3.,,,,,,,。

4.属于操作题,解答略。

5.属于操作题,解答略。

6. E {( [ ]) {'A''Z';( <)(" ");}}7.不可以。

习题四(第4章)1.110。

不规范。

2.新亲亲斤!!。

3.{( ) {(913112) {("是三等奖");}(20959627) {("是二等奖");}(87531659) {("是一等奖");{("未中奖");}}}4.;{( []) {();= 0; 存放电量= 0; 用户需要交纳的电费("输入电量:");();( <= 90 >=1){= *0.6计算的值}( <= 150 >=91){= 90*0.6+(90)*1.1计算的值}(>150){= 90*0.6+(150-90)*1.1+(150)*1.7计算的值}{("输入电量:""不合理");}("电费5.2f");}}5. E {( [ ]) {'A''Z';( <)("%2c");();( <)("%2c",(32));}}6. 5 {( []) {0;(1<=1000) {(0);}()("完数:");}}}7E {( []) {111;0;() {1;(1<){*i;};(>9876);;}("满足条件的最大整数:"+(1));}}习题五(第5章)1.用类创建对象时。

JAVA程序设计教程 第6章

JAVA程序设计教程 第6章

//最终异常处理代码
}
21
第6章
异常处理
1) try语句
在try语句后边有一对花括号,括起一个程序段,该程 序段指出了该程序段后面的catch( )方法所捕获的异常的范围。 该程序段中,调用了一个或多个可能产生异常的方法。
22
第6章
异常处理
2) catch( )方法
在try语句后面通常要跟有一个或多个catch( )方法,用 来处理try块内生成的异常事件。该方法只有一个参数:某 异常类的对象。这种异常类应是Throwable的子类。catch( ) 方法的方法体中给出了处理异常的语句。处理异常时常用下
27
第6章
异常处理
catch(ArrayIndexOutOfBoundsException e2) {
System.out.println(“Exception2:”+e2); } finally{ System.out.println(“Program is end\n”);
(Exception)。
5
第6章
异常处理
Java作为一个完全面向对象的语言,异常处理也是采用
面向对象的方法。所有的异常都是以类的形式存在的,除了 内置的异常类之外,Java也允许自己定义异常类。如果在一
个方法的运行过程中发生了异常,则这个方法将生成一个代
表该异常的对象,并把它提交给正在运行这个方法的系统, 这个过程称为抛出异常。系统在运行的时候查找处理异常的 方法,这个过程称为捕获异常。异常对象中包含有重要的信 息,包括发生异常事件的类型和异常发生时的程序运行状态。 对待异常通常不是简单地结束程序,Java语言的异常处理方 法有下列主要优点:
问题以统一的方式进行处理,不仅增加了程序的稳定性和可

Java面向对象程序设计(第二版) 第6章_使用数组

Java面向对象程序设计(第二版)  第6章_使用数组
先声明并创建后,再赋值 例如, int[] array1=new int[10]; 声明了包含10个元素的整型数组array1并为该数组分 配了存储空间,然后可通过赋值语句给数组中的各个 元素赋值。例如, array1[0]=6; array1[1]=7; array1[2]=8; 给数组元素array1[0],array1[1],array1[2]分别赋值 为6,7,8。
6.2.2 创建数组



数组中元素的个数称为数组大小或数组长度。与其他 高级语言不同的是,在声明数组时不能指定它的长度, 必须通过创建数组来指定长度。可用以下方法来创建, 利用关键字new来为数组分配内存,即创建数组。创 建数组的格式如下: 数组名=new 数据类型[数组长度]; 例如, mlist=new int[10]; 这条语句创建了一个数组名为mlist的数组,有10个数 组元素,为int型。
6.1 引例

学习数组之前,先看一个例子。 例6.1 存储26个大写字母并输出。 程序源代码如下:
程序运行结果如下: ABCDEFGHIJKLMNO PQRSTUVWXYZ
引例分析


以上程序的功能是将26个大些英文字母存储到 数组ch中,并输出每个数组元素的值。 如果用基本变量来存储这26个数据,则需要26 个变量,这样的程序健壮性和可移植性非常差。 而在本例中使用一个数组变量便可存储26个相 互独立访问的数据,大大提高了程序的效率。 这就是程序设计语言中引入数组的主要原因。
6.2.2 创建数组(续)

如果声明了一个数组但没有用new来开辟空间,则 数组不指向任何内存空间,其值为默认值。声明 一个数组并开辟内存空间后,则数组名是指向该 内存空间的首地址。

Java简明教程(第二版) 第6章 继承、多态与接口

Java简明教程(第二版)   第6章  继承、多态与接口

Java简明教程(第二版)
第6章 继承、多态与接口
第5页
6.1.1 继承
继承是面向对象程序设计的一个重要特点,通过继承可以实现代码 的复用,使得程序的复杂性呈线性增长,而不是随规模呈几何级数 增长。
在面向对象技术中,继承是指存在于面向对象程序中的两个类之间 的一种关系。当一个类自动拥有另一个类的所有属性(变量和方法) 时,就称这两个类之间具有继承关系。被继承的类称为父类,继承 了父类的所有属性的类称为子类。
//定义方法:显示学号

System.out.println("学号:"+stu_id);

}
}
Java简明教程(第二版)
第6章 继承、多态与接口
第11页
大学生类UniversityStudent
class UniversityStudent extends Student{ 子类
//定义UniversityStudent是Student的
Java简明教程(第二版)
第6章 继承、多态与接口
第7页
类的层次
Java中的类具有层次结构,实质上Java的系统类就是一个 类层次,如图6-1所示。Object类定义和实现了Java系统 所需要的众多类的共同行为,它是所有类的父类。Object 是一个根类,所有的类都是由这个类继承、扩充而来的, 该类定义在ng包中。
Java简明教程(第二版)
第6章 继承、多态与接口
第9页
创建子类
通过在类的声明中加入extends子句来创建一个类的子类,其语法 格式如下:

class 子类名extends 父类名称{

……

}

Java程序设计案例教程 第2版 第6章 继承和多态

Java程序设计案例教程 第2版 第6章 继承和多态
❖ 提高程序扩展性,复用基类的代码,从而提高编程效率 ❖ Java语言只支持单继承,即每个子类只有一个基类
Java程序设计案例教程
幻灯片 4,共38页
4
6.1.2 继承的实现
❖ 声明子类使用extends关键字
▪ 它的含义是扩展基类,即继承基类。
[类修饰符] class 类名 [extends 基类] { [成员变量声明] [getters和setters方法] [构造方法定义] [成员方法定义]
}
}
Java程序设计案例教程
幻灯片 9,共32页
9
成员变量的隐藏
❖ 属性隐藏时
▪ 当子类执行继承自父类的方法时,处理的是继承自父类的变量 ▪ 当子类执行自己定义的方法时,处理的是子类自己定义的变量 ▪ 若在第二种情况,仍希望调用父类的属性,需要使用super关键字
Java程序设计案例教程
幻灯片 10,共38页
}
} public class Student extends Person {
String address = "高浪西路1600";
public class Test { public static void main(String[] args) { Student s = new Student();
▪ 在子类中基类的成员变量被隐藏。 ▪ 子类仍然继承了基类的成员变量,只是将其名字隐藏
public class Person {
String name = "程艳";
String address = "中南路8号";
public void showDetail() {
System.out.println("name=" + name + ",address=" + address);

精品课件-Java程序设计(第二版)陈圣国-第6章

精品课件-Java程序设计(第二版)陈圣国-第6章
c[i]=a[i]+b[i]; return c; } public static void main (String[] args)
第6章 异 常 处 理
{ int []a = new int[20]; int []b = new int[10]; for(int i=0;i<20;i++) a[i] = i; for(int i=0;i<10;i++) b[i] = i; try{ int []c = IntArrayAdd(a,b); for(int i=0;i<c.length;i++) System.out.print(" "+c[i]);
另外,Java异常处理机制克服了传统方法的错误信息有 限的问题,可以针对不同的错误类型定义不同的异常类,异常 处理机制会根据异常对象的类型寻找匹配的错误处理代码。
第6章 异 常 处 理
6.2 Java语言异常的处理 6.2.1 try-catch块
Java语言中异常的捕捉是通过try-catch块来实现的,其 语法形式为
第6章 异 常 处 理
若采用throws声明方法抛掷的异常,Java语言编译器将 检查调用该方法时是否进行异常捕捉。例如,程序5.3在run 方法中调用线程类Thread类的sleep方法,如果将异常捕捉的 语句去掉,编译时将提示:
Exception "InterruptedException" not caught or declared by "void Ad.run()" 该提示信息要求run方法捕捉处理该异常,或在定义run方法 时声明该方法可能抛掷InterruptedException类型的异常, 然后由调用该方法的代码捕捉处理该异常。

java面向对象程序设计第2版第6章_内部类与异常类

java面向对象程序设计第2版第6章_内部类与异常类
《Java面向对象程序设计》第2版 第6章
内部类与异常类
Power point 制作:耿祥义 张跃平
配合< Java面向对象程序设计>第2版 例子源代码一起使用
2021/7/13
1
导读
2021/7/13
2
6.1 内部类
类可以有两种重要的成员:成员变量和方法,实际上Java 还允许类可以有一种成员:内部类。
Java支持在一个类中声明另一个类,这样的类称作内部类, 而包含内部类的类成为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下。 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中 的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体 中可以用内部类声明对象,作为外嵌类的成员。
2021/7/13
16
2021/7/13
13
6.5 断言
断言语句用于调试代码阶段。在调试代码阶段让 断言语句发挥作用,这样就可以发现一些致命的错误, 当程序正式运行时就可以关闭断言语句,但仍把断言 语句保留在源代码中,如果以后应用程又需要调试, 可以重新启用断言语句。
使用关键字assert声明一条断言语句,断言语句有 以下两种格式:
本节通过一个例子熟悉带finally子语句的try~catch语句,语 法格式如下:
try{ } catch(ExceptionSubClass e){ } finally{ }
其执行机制是:在执行try~catch语句后,执行finally子语句,也 就是说,无论在try部分是否发生过异常,finally子语句都会被执行。 但需要注意以下两种特殊情况:
内部类仅供它的外嵌类使用,其他类不可以用某个类的内 部类声明对象。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 Java语言中的异常
异常
为了加强程序的鲁棒性(强壮性,robust),
程序设计时,必须考虑到可能发生的异常 事件并做出相应的处理 例6-1
虽然程序的鲁棒性加强了,但结构臃肿,大量 的错误处理代码混杂在程序中,可读性差。目 标程序也会增大许多 出错返回信息量太少,无法更确切的了解错误 状况或原因。特别是,当出现上述语句没包含 的情况时,程序将束手无策
try { // 此处为抛出具体异常的代码 } catch (ExceptionType1 e) { // 抛出ExceptionType1异常时要执行的代码 } catch (ExceptionType2 e) { // 抛出ExceptionType2异常时要执行的代码 ... } catch (ExceptionTypek e) { // 抛出ExceptionTypek异常时要执行的代码 }finally { // 必须执行的代码 }
异常发生时,Java运行时系统从生成对象的代码
块开始进行回溯,找到包含相应异常处理的方法, 并把异常对象交给该方法处理,这一过程称为捕 获(catch)
例6-2 用异常处理方式来重写例6-1
异常机制的优点
把异常处理代码从常规代码中分离出来,
增加了可读性,方便修改 按异常类型和差别进行分组,即从预定义 的类Exception中派生自己的子类,对无法 预测的异常也可以进行捕获和处理,克服 了传统方法中错误信息有限的问题 异常的处理借助于调用堆栈按先近后远的 原则进行
数组下标越界
SecurityException
一般在浏览器内抛出。 若Applet试图进行下述操作,则抛出此异常:
• 访问本地文件。 • 打开一个套接口,而不是返回到提供Applet的主机。 • 在运行时环境中运行另一个程序。
公共异常
ArrayStoreException
程序试图存取数组中错误的数据类型
访问没有实例化的对象或调用它的方法
image im [ ] = new image [4]; System.out.println(im[0].toString());
公共异常
NegativeArraySizeException
创建数组时,元素个数是个负数
ArrayIndexOutOfBoundsException
RuntimeException
每个类使用的目的
Error
表示很难恢复的错误,如内存越界。交给系统处理为 好
RuntimeException
用来表示设计或实现方面的问题,如数组越界等。因 为设计和实现正确的程序不会引发这类异常,所以常 常不处理它 发生这类异常时,运行时环境会输出一条信息,提示 用户修正错误
异常抛出
异常抛出格式
<访问权限修饰符><返回值类型><方法名> (参 数列表) throws 异常列表
public void troubleSome() throws IOException
创建自己的异常
用户自定义的所有异常类都必须是
Exception的子类
public class MyException extends Exception {...}
FileNotFoundException
试图存取一个并不存在的文件
IOException
通常的I/O错误
异常分类
在Java中主要有三类异常。类ng.Throwable是使
用异常处理机制可被抛出并捕获的所有异常对象的父类。 它有三个基本子类,如图所示。
Throwable Exception Error
例6-3
程序6-2示例
程序6-2改写了程序6-1。在程序中,捕获所
发生的异常,将越界的下标重新置回0,然 后让程序继续执行
公共异常
ArithmeticException
整数除法中,如果除数为0,则发生该类异常 int i = 12 / 0;
NullPointerException
Java异常处理机制
预定义了Exception类。在Exception类中定
义了程序产生异常的条件
简化了代码的编写。常见的异常也可以统
一处理,提高了效率,代码重用率高
允许程序员自己编写特殊的异常处理程序,
以满足更独特的需要
ቤተ መጻሕፍቲ ባይዱ
抛出和捕获
方法的运行过程中,如果发生了异常,称程序产
生了一个异常事件,相应地生成异常对象。生成 异常对象并把它提交给运行时系统的这一过程称 为抛出(throw)异常
其他
异常表示运行时因环境的影响可能发生并可被处理的 问题。如文件没找到或不完整的URL等。程序员处理 它们
抛出
如果一个方法确实引发了一个异常,那么在方法中必须写
明相应的处理代码。 (Error或RuntimeException两类错误 除外)
程序员处理异常有两种方法:
一种是使用try{}、catch(){}块,捕获到所发生的异常类, 并进行相应的处理。catch块可以为空,表示对发生的 异常不进行处理 另一种方法是,程序员不在当前方法内处理异常,而是 把异常抛出到调用方法中。在说明方法时使用如下格式 就可做到这一点
在程序中发现异常情况时,可以抛出
(throw)一个异常实例,将其放到异常队
列中去,并激活Java的异常处理机制,如:
throw new MyException ()
程序6-3
程序6-3定义自己的异常
客户-服务器程序
考虑客户-服务器程序。在客户端代码中,可以尝
试与服务器连接,并期望服务器在5秒内作出响应。 如果服务器没有响应,则客户端代码就抛出一个 异常,用户可以把这个异常定义为 ServerTimedOutException
在大的项目中采用统一的方式处理异常时
编写文字处理器一类的程序等;
不经常发生但却可能发生的故障
异常示例
简单扩展前面使用过的程序1-1的
HelloWorldApp.java程序,循环打印一些信 息。程序执行到第4次循环时,会发生异常 代码见程序6-1
异常处理
try,catch和finally语句
异常传播方式
method4 调 用 method3 传 递
探测抛出异常
method2
method1
捕获处理异常
异常层次结构
使用异常机制情况
当方法因为自身无法控制的原因而不能完
成其任务 文件不存在,网络连接无法建立等 处理在方法、类库、类中抛出的异常
如FileInputStream.read产生IOException;
相关文档
最新文档