《java面向对象程序设计第2版第6章-内部类与异常类.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第2版第6章-内部类与异常类.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面向对象程序设计面向对象程序设计第第2 2版版 第第6章章配合第第2版版 例子源代码一起使用例子源代码一起使用Power point 制作:耿祥义 张跃平内部类与异常类 导读导读6.1 内部类内部类 类可以有两种重要的成员:成员变量和方法,实际上Java还允许类可以有一种成员:内部类。Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。内部类和外嵌类之间的重要关系如下。内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。内
2、部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。例子例子1 某种类型的农场饲养了一种特殊种类的牛,但不希望其他农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创建这种特殊种牛的类作为自己的内部类。下面的例例子子1(Example6_1.java)中有一个RedCowForm(红红牛牛农农场场)类,该类中有一个名字为RedCow(红红牛牛)的内部类。程序运行效果如图6.1。6.2 匿名类匿名类 6.2.1 和子类有关的匿名类和子类有关的匿名类 JavaJava允允许许我我们们直直接接使使用用一一个个类类的的子子类类的的类类体体创创建建一个子类对象。一个子类对象。创创建建子子类类
3、对对象象时时,除除了了使使用用父父类类的的构构造造方方法法外外还还有有类类体体,此此类类体体被被认认为为是是一一个个子子类类去去掉掉类类声声明明后后的的类类体体,称作匿名类。称作匿名类。假假设设BankBank是是类类,那那么么下下列列代代码码就就是是用用BankBank的的一一个个子子类(匿名类)创建对象:类(匿名类)创建对象:new Bank()匿名类的类体匿名类的类体 ;例子例子2 下面的例子2中,向一个方法的参数传递了一个匿名类的对象,并用匿名类创建了一个对象。运行效果如图6.2。Example6_2.java 程序运行效果如图6.2。6.2.2 和接口有关的匿名类和接口有关的匿名类
4、假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。下列代码就是用实现了Computable接口的类(匿名类)创建对象:new Computable()实现接口的匿名类的类体实现接口的匿名类的类体 ;例子例子3 3演示了和接口有关的匿名类的用法演示了和接口有关的匿名类的用法,运行效果如图运行效果如图6.36.3。6.3 异常类异常类 所所谓谓异异常常就就是是程程序序运运行行时时可可能能出出现现一一些些错错误误,比比如如试试图图打打开开一一个个根根本本不不存存在在的的文文件件
5、等等,异异常常处处理理将将会会改变程序的控制流程,让程序有机会对错误作出处理。改变程序的控制流程,让程序有机会对错误作出处理。异异常常对对象象可可以以调调用用如如下下方方法法得得到到或或输输出出有有关关异异常常的信息:的信息:public String getMessage();public void printStackTrace();public String toString();6.3.1 trytrycatchcatch语句语句 Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,将发生异常后的处理放在catch部分。trycatch
6、语句的格式如下:例子例子4给出了给出了trycatch语句的用法,程序运行效果如图语句的用法,程序运行效果如图6.4 try 包含可能发生异常的语句包含可能发生异常的语句 catch(ExceptionSubClass1 e)catch(ExceptionSubClass2 e)6.3.2 自定义异常类自定义异常类 我们也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。注:
7、throw是Java的关键字,该关键字的作用就是抛出异常.throw和throws是两个不同的关键字。例子例子5 People类中有一个设置age的方法,如果向该方法传递小于1或大于160的整数,方法就抛出异常。程序运行效果如图6.5。Example6_5.java People.java IntegerException.java6.4 finallyfinally子语句子语句 本节通过一个例子熟悉带finally子语句的trycatch语句,语法格式如下:try catch(ExceptionSubClass e)finally 其执行机制是:在执行trycatch语句后,执行finall
8、y子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。但需要注意以下两种特殊情况:如果在trycatch语句中执行了return语句,那么finally子语句仍然会被执行。trycatch语句中执行了程序退出代码,即执行System.exit(0);,则不执行finally子语句。例子例子6 例子6中模拟向货船上装载集装箱,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异常,货船都需要正点启航。运行效果如图6.6。代码链接代码链接6.5 断言断言 断断言言语语句句用用于于调调试试代代码码阶阶段段。在在调调试试代代码码阶阶段段让让断断言言语
9、语句句发发挥挥作作用用,这这样样就就可可以以发发现现一一些些致致命命的的错错误误,当当程程序序正正式式运运行行时时就就可可以以关关闭闭断断言言语语句句,但但仍仍把把断断言言语语句句保保留留在在源源代代码码中中,如如果果以以后后应应用用程程又又需需要要调调试试,可以重新启用断言语句。可以重新启用断言语句。使使用用关关键键字字assert声声明明一一条条断断言言语语句句,断断言言语语句句有有以下两种格式:以下两种格式:assert booleanExpression;assert booleanExpression:messageException;例子例子7 例子7在计算若干个正数的和时使用了断
10、言语句,运行效果如图6.7。代码链接代码链接6.6 小结小结 1 1Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。2 2和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。3和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。4 4Java的异常可以出现在方法调用过程中,即在方法调用过程中抛出异常对象,导致程序运行出现异常,并等待处理。Java 使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分。