Java面向对象程序设计第6章内部类与异常类.ppt_第1页
Java面向对象程序设计第6章内部类与异常类.ppt_第2页
Java面向对象程序设计第6章内部类与异常类.ppt_第3页
Java面向对象程序设计第6章内部类与异常类.ppt_第4页
Java面向对象程序设计第6章内部类与异常类.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java面向对象程序设计 第6章,内部类与异常类,主讲:王美丽 办公室:信息学院403 Email: meili_,内部类 匿名类 异常类 断言 难点 异常类,主要内容,6.1 内部类,类的成员: 成员变量、成员方法,Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。,内部类可以访问外嵌类的成员变量、成员方法 。,外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。,内部类的类体中不可以声明类变量和类方法。,内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。,内部类例,public class China private String song=“义勇军进行曲“; public void test() class Beijing String name=“北京“; void speak() System.out.println(“Our capital is: “+name+“,Our national song is :“+song); public static void main(String args) China c= new China(); c.new Beijing().speak();,6.2 匿名类,匿名内部类:子类去掉类声明的类体 优点: 使代码更加简洁、紧凑,模块化程度更高。 匿名内部类两种实现方式: 继承一个类,重写其方法; 实现一个接口(可以是多个),实现其方法。,匿名类是一个子类,用于临时创建一个内部类对象,不必单独去定义该子类 匿名类体内可以对父类、抽象类以及接口的方法进行重写 由于匿名类没有类名,因此不能重用这个对象 创建形式: new People() 匿名类类体 ;,匿名类在创建对象时,要直接使用父类的构造方法,完成三件事:,1、创建一个Speak的子类,该子类为匿名类,2、改写Speak中的方法speakHello(),3、返回该子类的引用,赋给Speak speak,和类有关的匿名类,和接口有关的匿名类,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。 下列代码就是用实现了Computable接口的类(匿名类)创建对象: new Computable() 实现接口的匿名类的类体 ,6.3 异常类,能否很好的处理运行时刻的异常情况是一个程序健康的标志,输入数据不符合要求 除数为0 数组的下标越界 少了所需加载的类 打开不存在的文件 网络无法连接 操作数超出所要求的范围 自定义异常,要求程序处理,什么时候会发生异常?,正常业务逻辑,异常捕捉,使用Java的异常处理机制,读、写和调试代码变得清晰。它把错误的代码和正常的代码分开。,Java中的处理方法?,错误:指的是系统异常或运行环境出现的异常, 这些异常一般是很严重的异常, 即使捕捉到通常也无法处理,例如Java虚拟机异常,指的是一般的异常,例如,输入/输出(I/O)异常。对这些异常应用程序可以进行处理,一旦捕获异常,马上进行处理 捕获异常,但并不处理,或只部分处理 重新抛出异常,Java中如何进行异常处理,Java异常处理:try、catch、finally、throw、throws 5个关键字。,在方法中手动抛出异常,声明方法有可能抛出的各种异常类,try,finally,catch,throws,throw,有可能会出现异常的代码一定要放到try代码块中,不管有没有异常都要执行的代码,捕获和处理异常,try /业务实现代码 catch (Type1 id1 ) 处理异常类型1语句; catch ( Typen id2 ) 处理异常类型2语句; /其它catch语句 finally 无论是否抛出异常都要执行的语句;, 必不可少,即使只有一句代码,有try,则catch、finally必须出现其一。,Catch块可以有多个,从上往下依次判断,只要捕捉到一个异常,下面的catch块不会执行,三、异常的抛出和处理,throws语句指明方法中可能要产生的异常类型,由调用者进行异常处理。,在抛出的方法定义后加上 throws Exception 功能:在调用方法和可能产生的异常的被调用方法之间建立起系统处理异常所需的联系,void f() throws TooBig,TooSmall,OldStyle / body of f() ,TestDiv (写一个方法,throws 异常),返回,public static int div() throws Exception String a = JOptionPane.showInputDialog(“请输入被除数:“); String b = JOptionPane.showInputDialog(“请输入除数:“); System.out.print(a+“/“+b+“=“); int a1=Integer.parseInt(a); int b1=Integer.parseInt(b); int c=a1/b1; System.out.println(c); return c; ,三、异常的抛出和处理,如果需要在程序中自行抛出异常,应使用throw语句 throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例,throws是用来声明一个方法可能抛出的所有异常信息 throw则是指抛出的一个具体的异常类型; 通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息; throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法; throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。,Throws 与Throw 区别,自定义异常类,通过继承Exception类或它的子类,实现自定义异常类。 Exception类有两个构造函数 public Exception(); public Exception(String s); 其中s表示对异常的描述说明 Exception类的常用方法: public void printStackTrace();返回调用栈信息 public String toString();返回异常对象的字符串表示 public String getMessage();返回异常对象中携带的出错信息,对于自定义异常,必须采用throw语句抛出异常,这种类型的异常不会自行产生。总体上分为两步: 第1步:定义异常类 第2步:定义异常对象,并抛出该对象。,自定义异常类,第1步:定义异常类 class userException extends Exception int n=0; / 计数器 userException( ) n+; userException(String s ) super(s); n+; String show( ) return “自定义异常对象:“+n; ,自定义异常类,第2步:定义异常对象,并抛出该对象。 public class testException static void Test( ) throws UserException userException e; e=new userException(“自定义异常“ ); throw e; public static void main(String args ) try Test( ); catch(userException e) System.out.println(e.show( ); ,自定义异常类,6.4 断言,Java1.4以后引入断言机制 主要用于监视代码的执行状态 两种格式: assert booleanExperession; 如果booleanExperession为真,继续执行,否则在此处停止执行 assert booleanExperession:messageExpression 如果booleanExperession为真,继续执行,否

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论