《包和异常》PPT课件.ppt
《《包和异常》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《包和异常》PPT课件.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 Java接口、包和异常Java程序设计1 前一页 休息本章主要内容本章主要内容l接口接口l实现接口的类定义实现接口的类定义l接口的多态性接口的多态性l包及创建包包及创建包l类的包外引用类的包外引用l异常异常,不受检异常和受检异常不受检异常和受检异常l自定义异常类自定义异常类2 前一页 休息接口接口l C+语言中在定义一个类时,可以继语言中在定义一个类时,可以继承多个父类承多个父类 l多继承对内存开销较大,给系统的维多继承对内存开销较大,给系统的维护、移植带来极大的不便。护、移植带来极大的不便。l Java不支持多继承不支持多继承 l考虑到在实际应用中,考虑到在实际应用中,Java
2、 引入接口引入接口的概念。的概念。Java支持一个类可以实现一支持一个类可以实现一个或多个接口个或多个接口。3 前一页 休息接口概述l接口与类的差别接口与类的差别:l 类有它的成员变量和成员方法,接口是一组抽象方法和常量的类有它的成员变量和成员方法,接口是一组抽象方法和常量的集合。可以认为接口是一种只有常量和抽象方法的特殊抽象类。在定集合。可以认为接口是一种只有常量和抽象方法的特殊抽象类。在定义一个实现接口的类时,一定要实现接口中协议规定的那些方法功能。义一个实现接口的类时,一定要实现接口中协议规定的那些方法功能。l 接口的意义接口的意义:达到和达到和C+语言中多继承一样的目的,解决了因多继承
3、所带来的语言中多继承一样的目的,解决了因多继承所带来的开销过大的问题。通过定义实现同一接口的类,描述了类要实现的功开销过大的问题。通过定义实现同一接口的类,描述了类要实现的功能框架,可以使不相关的类具有相同的行为能框架,可以使不相关的类具有相同的行为。l接口的作用与抽象类有些类似,但功能比抽象类强,使用也更方便。接口的作用与抽象类有些类似,但功能比抽象类强,使用也更方便。接口4 前一页 休息方法协议方法协议 所谓方法协议,是指只有方法名和参数,方所谓方法协议,是指只有方法名和参数,方法返回类型,而没有方法体的一种说明格式法返回类型,而没有方法体的一种说明格式 它只体现方法的说明,但不指定方法体
4、,真它只体现方法的说明,但不指定方法体,真正的方法体是由实现接口的类来实现。正的方法体是由实现接口的类来实现。与抽象方法的关系:抽象方法的方法体是由与抽象方法的关系:抽象方法的方法体是由子类实现的。子类实现的。接口5 前一页 休息 接口的定义l接口定义包括接口的声明和接口体两部分,接口定义包括接口的声明和接口体两部分,其语法规则为:其语法规则为:l public interface接口名接口名 extends 父父接口列表接口列表 ll public static final 类型类型 常量名常量名=值;值;l public abstract 返回类型返回类型 接口方法名接口方法名(形参表);
5、(形参表);ll 6 前一页 休息实现接口的类定义l实现接口的类定义:实现接口的类定义:类访问控制修饰词类访问控制修饰词 class 类名类名 extends父类名父类名 implements接口接口列表列表类体类体例例7-1 7 前一页 休息接口的多态性l在面向对象程序设计中,继承性和多在面向对象程序设计中,继承性和多态性是降低软件复杂性的有效技术。态性是降低软件复杂性的有效技术。l通过使用多态,使系统更容易扩充。通过使用多态,使系统更容易扩充。l改进软件开发的关键是软件重用,通改进软件开发的关键是软件重用,通过继承基本类和可用类库,带来软件过继承基本类和可用类库,带来软件重用的最大效益。重
6、用的最大效益。接口8 前一页 休息 接口的多态性演示接口的多态性演示 演示实现接口的各相关类的多态性:演示实现接口的各相关类的多态性:Shape提供求图形面积提供求图形面积area协议的接口,协议的接口,类类Circle,Triangle和和ectangle依据各依据各自情况,实现了接口自情况,实现了接口Shape的的area方法,方法,因此,不同对象的求图形面积形式各异,因此,不同对象的求图形面积形式各异,形成多态性。形成多态性。例例7-3 9 前一页 休息 包(package)l包是对类和接口进行组织和管理的目录包是对类和接口进行组织和管理的目录结构。结构。l Java 包可以视为存储相关
7、类和接口的包可以视为存储相关类和接口的容器。容器。l包的另外一个好处是它提供了包的另外一个好处是它提供了“唯一类唯一类名名”的约定的约定 10 前一页 休息 创建包l包的层次结构名是类访问名的一部分,包的层次结构名是类访问名的一部分,必须在程序中通过必须在程序中通过package语句指定。语句指定。l包的定义格式如下:包的定义格式如下:package 包名包名1.包名包名;其中,其中,package是关键字,包名是关键字,包名1.包名包名为层次结构包名,用圆点为层次结构包名,用圆点.分分隔每个包。隔每个包。11l创建可复用的类的步骤:创建可复用的类的步骤:1)定义一个)定义一个public类,
8、如果不是类,如果不是public类,它类,它只能被同一包中的其它类引用;只能被同一包中的其它类引用;2)选择层次结构包名,并用)选择层次结构包名,并用package语句将语句将其加到可复用类的源代码文件中的第一行,指明该其加到可复用类的源代码文件中的第一行,指明该类所在的包;注意:此时,第一行不能是空行或注类所在的包;注意:此时,第一行不能是空行或注释。释。3)编译这个类,并放到指定的)编译这个类,并放到指定的classpath下,下,作为顶层包的父目录中。例如,指定作为顶层包的父目录中。例如,指定classpath为为c:j2sdk1.4.1_02 jreclasses。classes目录在
9、目录在缺省时不存在,必须在第一个要放到该路径中的类缺省时不存在,必须在第一个要放到该路径中的类之前创建它。创建之前创建它。创建classes目录的目录的DOS命令:命令:l C:md c:j2sdk1.4.1_02jreclasses 12 前一页 休息类的包外引用l 1.import 语句语句 import 语句的语法语句的语法:import 包名包名1.包名包名.类名类名/*;其中,其中,importimport是关键字,包名是关键字,包名1.1.包名包名为层为层次结构包名,用圆点次结构包名,用圆点.分隔每个包。分隔每个包。*表示引入指表示引入指定包中的所有的类。定包中的所有的类。l 2直
10、接使用类的访问名直接使用类的访问名l直接使用类的访问名指出要引入,重用直接使用类的访问名指出要引入,重用的类,类访问名包括层次结构包名和类名的类,类访问名包括层次结构包名和类名两部分:两部分:包名包名1.包名包名.类名类名 包13l例如,在定义例如,在定义Time类继承类时,用两类继承类时,用两种方法引入种方法引入Time1类类:import com.juj.Time1;class Time extends Time1;或 class Time extends com.juj.Time1;14l例例7.5 供重用的供重用的Point类,源程序在类,源程序在d:jujava中,编译存放中,编译存
11、放在在com.juj包中。包中。lpackage com.juj;lpublic class Pointlprivateint x,y;/私有成员变量私有成员变量l/重载的构造方法重载的构造方法lpublic Point()lpublic Point(int x,int y)this.x=x;this.y=y;l/其它成员方法其它成员方法lpublic void setx(int a)x=a;lpublic int getx()return x;lpublic void sety(int a)y=a;lpublic int gety()return y;l15l将将Point 类编译类编译,并
12、存于并存于classpath为为c:j2sdk1.4.1_02jreclasses的的com.juj包中,使用编译命令:包中,使用编译命令:lD:jujava javac d c:j2sdk1.4.1_02jreclasses Point.javal/MDPoint2.java主类,存放在无名包主类,存放在无名包(即当前目录(即当前目录d:jujava)中。)中。16l import com.juj.Point;lpublic class MDPoint2lpublic static void main(String args)lPoint a=new Point();lPoint p=new
13、 Point(3,5);lp.setx(6);lSystem.out.println(p 点间的点间的 x,y 坐标为坐标为:+p.getx()+,+p.gety();lSystem.out.println(a 点间的点间的 x,y 坐标为坐标为:+a.getx()+,+a.gety();ll17l运行结果运行结果:lp 点间的点间的 x,y 坐标为坐标为:6,5la 点间的点间的 x,y 坐标为坐标为:0,018 前一页 休息异常的基本概念 异常(异常(Exception)是指应用程)是指应用程序在运行过程中发生的不正常情况,序在运行过程中发生的不正常情况,或发生错误(或发生错误(Error
14、)。用任何计算机)。用任何计算机程序设计语言编写的程序,在运行过程序设计语言编写的程序,在运行过程中都不可避免地可能出现各种各样程中都不可避免地可能出现各种各样的异常现象。如被零除,数组下标超的异常现象。如被零除,数组下标超界,访问的文件或对象不存在,内存界,访问的文件或对象不存在,内存不够等等。程序运行中的异常可以预不够等等。程序运行中的异常可以预料但不可避免。料但不可避免。异常处理19 前一页 休息异常的基本概念 Java将程序运行过程中发生异常抽象成将程序运行过程中发生异常抽象成类,每个异常类代表一个相应的异常,类类,每个异常类代表一个相应的异常,类中包含异常信息和异常处理方法。中包含异
15、常信息和异常处理方法。应用程序在运行过程中如果发生异常事应用程序在运行过程中如果发生异常事件,件,Java虚拟机或正在运行程序捕获异常,虚拟机或正在运行程序捕获异常,创建并抛出一个异常对象,生成的异常对创建并抛出一个异常对象,生成的异常对象将由象将由JVM解析处理,称解析处理,称“抛出异常抛出异常”机机制,确保不会死机,从而保证系统的安全制,确保不会死机,从而保证系统的安全性。性。Java“抛出异常抛出异常”机制将异常处理与正机制将异常处理与正常程序分离,易于维护,程序更为简洁。常程序分离,易于维护,程序更为简洁。异常处理20 前一页 休息 Java中异常对象的类型和层中异常对象的类型和层次结
16、构次结构l在在Java中所有的异常都是类中所有的异常都是类Throwable的后继子类。的后继子类。l类类Throwable有两个直接子类:有两个直接子类:Error类类和和Exception类。类。lException类的子类分两类:类的子类分两类:受检异常(受检异常(checked Exception)不受检异常(不受检异常(unchecked RuntimeException and Error)。)。l 异常处理21 前一页 休息 不受检异常不受检异常l不受检异常有:不受检异常有:ljava.lang.ArithmeticException算术运算异常,如被零除等算术运算异常,如被零除
17、等ljava.lang.ArrayIndexOutOfBoundsException数组下标超界异常数组下标超界异常ljava.lang.StringIndexOutOfBoundsException字符串下标超界异常字符串下标超界异常ljava.lang.ClassCastException类型转换异常类型转换异常ljava.lang.NegativeArraySizeException数组大小为负数异常数组大小为负数异常 22 前一页 休息 l例例77 不受检异常的例子。不受检异常的例子。lclass ExceptionDemo0l public static void main(Stri
18、ng args)lint a=5,0,4,10;int m=100;double d;lfor(int i=0;ia.length;i+)ld=m/ai;/被零除的异常被零除的异常!lSystem.out.println(程序运行结束程序运行结束!);ll23l例例78 用用try-catch结构检测、处理不受检异常。结构检测、处理不受检异常。lclass ExceptionDemo1lpublic static void main(String args)ll int a=5,0,4,10;l int m=100;lfor(int i=0;i0)System.out.println(平方根平
19、方根为为:+x+,+Math.sqrt(x);ll29l D:IfElseDemo1.java:10:unreported exception java.io.IOException;must be caught or declared to be thrownx=(byte)System.in.read();1 errorl该例程序的该例程序的main方法使用了输入方法使用了输入/输出处理类,输出处理类,要求程序监视输入要求程序监视输入/输出异常,当删去输出异常,当删去throws子句时,编译出错,不能通过。如将程序修改,子句时,编译出错,不能通过。如将程序修改,增加增加throws子句监视
20、异常子句监视异常,则编译通过,程,则编译通过,程序可正常运行。序可正常运行。30 前一页 休息 异常处理机制l可以用三种方法处理程序可能发生的异可以用三种方法处理程序可能发生的异常。常。l(1)程序内部处理和)程序内部处理和try-catch结构结构l(2)抛出异常外部处理和)抛出异常外部处理和throws子句子句l(3)程序内部处理和外部处理两者结)程序内部处理和外部处理两者结合和合和throw语句语句 31 前一页 休息程序内部处理和程序内部处理和try-catch结结构构l ltry-catch结构的语法:结构的语法:ltry/可能发生不受检异常类型可能发生不受检异常类型lcatch(异
21、常类(异常类1 异常实例异常实例1)l/捕获并处理异常类捕获并处理异常类1的异常的异常lcatch(异常类(异常类2 异常实例异常实例2)l/捕获并处理异常类捕获并处理异常类2的异常的异常ll finally/异常终结处理异常终结处理 异常处理机制32l例例710 一个不受检异常(数组下标超界)程序内部处理的例子,一个不受检异常(数组下标超界)程序内部处理的例子,演示演示try-Catch结构执行流程。结构执行流程。lclass ArrayTestElpublic static void main(String args)lint i;int a=new int5;ltrylfor(i=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 包和异常 异常 PPT 课件
限制150内