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

下载本文档

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

文档简介

内部类匿名类异常类断言难点异常类主要内容6.1内部类类的成员:成员变量、成员方法Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。内部类可以访问外嵌类的成员变量、成员方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。内部类的类体中不可以声明类变量和类方法。内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到。内部类例publicclassChina{privateStringsong="义勇军进行曲";publicvoidtest(){}

classBeijing{Stringname="北京";voidspeak(){System.out.println("Ourcapitalis:"+name+",Ournationalsongis:"+song);}}publicstaticvoidmain(String[]args){Chinac=newChina();c.newBeijing().speak();}}

6.2匿名类匿名内部类:子类去掉类声明的类体优点:使代码更加简洁、紧凑,模块化程度更高。匿名内部类两种实现方式:继承一个类,重写其方法;实现一个接口(可以是多个),实现其方法。匿名类是一个子类,用于临时创建一个内部类对象,不必单独去定义该子类匿名类体内可以对父类、抽象类以及接口的方法进行重写由于匿名类没有类名,因此不能重用这个对象创建形式:newPeople(){

匿名类类体};匿名类在创建对象时,要直接使用父类的构造方法完成三件事:1、创建一个Speak的子类,该子类为匿名类2、改写Speak中的方法speakHello()3、返回该子类的引用,赋给Speakspeak和类有关的匿名类和接口有关的匿名类

Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。下列代码就是用实现了Computable接口的类(匿名类)创建对象:

newComputable(){实现接口的匿名类的类体}

6.3异常类概念异常是指程序在执行过程中出现的意外事件。特点通常会使程序的正常流程被打断能否很好的处理运行时刻的异常情况是一个程序健康的标志输入数据不符合要求除数为0数组的下标越界少了所需加载的类打开不存在的文件网络无法连接操作数超出所要求的范围自定义异常,要求程序处理…什么时候会发生异常?readfile{

try{ openthefile;//打开文件

dertermineitssize;//判断大小

allocatethatmuchmemory;//分配内存

readthefileintomemory;//将文件读入内存

closethefile;//关闭文件 }

catch(fileopenfailed){do

sth. }

catch(sizederterminedfailed){do

sth.}

catch(memoryallocatedfailed){do

sth.}

catch(readfailed){do

sth. }

catch(fileclosefailed){do

sth.}}正常业务逻辑异常捕捉使用Java的异常处理机制,读、写和调试代码变得清晰。它把错误的代码和正常的代码分开。Java中的处理方法?错误:指的是系统异常或运行环境出现的异常,这些异常一般是很严重的异常,即使捕捉到通常也无法处理,例如Java虚拟机异常指的是一般的异常,例如,输入/输出(I/O)异常。对这些异常应用程序可以进行处理1、Java中的异常类2、异常处理方法一旦捕获异常,马上进行处理捕获异常,但并不处理,或只部分处理重新抛出异常Java中如何进行异常处理Java异常处理:try、catch、finally、throw、throws5个关键字。在方法中手动抛出异常声明方法有可能抛出的各种异常类

tryfinallycatchthrowsthrow有可能会出现异常的代码一定要放到try代码块中不管有没有异常都要执行的代码捕获和处理异常2、异常处理方法(1)try

{//业务实现代码}

catch

(Type1id1)

{处理异常类型1语句;}

catch

(Typenid2)

{处理异常类型2语句;} ……//其它catch语句

[finally { 无论是否抛出异常都要执行的语句;}]{}必不可少,即使只有一句代码有try,则catch、finally必须出现其一。Catch块可以有多个,从上往下依次判断,只要捕捉到一个异常,下面的catch块不会执行三、异常的抛出和处理throws语句指明方法中可能要产生的异常类型,由调用者进行异常处理。在抛出的方法定义后加上

throwsException功能:在调用方法和可能产生的异常的被调用方法之间建立起系统处理异常所需的联系voidf()throwsTooBig,TooSmall,OldStyle{ //bodyoff()}TestDiv(写一个方法,throws异常)返回publicstaticintdiv()throwsException{Stringa=JOptionPane.showInputDialog("请输入被除数:");Stringb=JOptionPane.showInputDialog("请输入除数:");System.out.print(a+"/"+b+"=");inta1=Integer.parseInt(a);intb1=Integer.parseInt(b);intc=a1/b1;System.out.println(c);returnc;}三、异常的抛出和处理如果需要在程序中自行抛出异常,应使用throw语句throw语句抛出的不是异常类,而是一个异常实例,而且每次只能抛出一个异常实例throws是用来声明一个方法可能抛出的所有异常信息throw则是指抛出的一个具体的异常类型;通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息;

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;

throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

Throws与Throw区别自定义异常类通过继承Exception类或它的子类,实现自定义异常类。Exception类有两个构造函数publicException();publicException(Strings);其中s表示对异常的描述说明Exception类的常用方法:publicvoidprintStackTrace();返回调用栈信息publicStringtoString();返回异常对象的字符串表示publicStringgetMessage();返回异常对象中携带的出错信息对于自定义异常,必须采用throw语句抛出异常,这种类型的异常不会自行产生。总体上分为两步:第1步:定义异常类第2步:定义异常对象,并抛出该对象。自定义异常类第1步:定义异常类classuserExceptionextendsException{ intn=0;//计数器

userException(){n++; } userException(Strings){ super(s); n++; }

Stringshow(){ return"自定义异常对象:"+n; }}自定义异常类第2步:定义异常对象,并抛出该对象。publicclasstestException{ staticvoidTest()throwsUserException{

userExceptione; e=newuserException("自定义异常"); throwe; } publicstaticvoidmain(Stringargs[]){ try{Test();

}catch(userExceptione){ System.out.println(e.show()); } }}自定义异常类6.4断言Java1.4以后引入断言机制主要用于监视代码的执行状态两种格式:assertbooleanExperession;

如果booleanExperession为真,继续执行,否则在此处停止执行assertbooleanExperession:messageExpression

如果booleanExperession

温馨提示

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

评论

0/150

提交评论