




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/6/14,1,Java面向对象程序设计第2版 第6章,配合第2版 例子源代码一起使用,Power point 制作:耿祥义 张跃平,内部类与异常类,2019/6/14,2,导读,2019/6/14,3,6.1 内部类,类可以有两种重要的成员:成员变量和方法,实际上Java还允许类可以有一种成员:内部类。 Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下。 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。,2019/6/14,4,例子1,某种类型的农场饲养了一种特殊种类的牛,但不希望其他农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创建这种特殊种牛的类作为自己的内部类。 下面的例子1(Example6_1.java)中有一个RedCowForm(红牛农场)类,该类中有一个名字为RedCow(红牛)的内部类。程序运行效果如图6.1。,2019/6/14,5,6.2 匿名类 6.2.1 和子类有关的匿名类,Java允许我们直接使用一个类的子类的类体创建一个子类对象。 创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。 假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象: new Bank () 匿名类的类体 ;,2019/6/14,6,例子2,下面的例子2中,向一个方法的参数传递了一个匿名类的对象,并用匿名类创建了一个对象。运行效果如图6.2。 Example6_2.java 程序运行效果如图6.2。,2019/6/14,7,6.2.2 和接口有关的匿名类,假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。 下列代码就是用实现了Computable接口的类(匿名类)创建对象: new Computable() 实现接口的匿名类的类体 ; 例子3演示了和接口有关的匿名类的用法,运行效果如图6.3。,2019/6/14,8,6 .3 异常类,所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。 异常对象可以调用如下方法得到或输出有关异常的信息: public String getMessage(); public void printStackTrace(); public String toString();,2019/6/14,9,6.3.1 trycatch语句,Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,将发生异常后的处理放在catch部分。 trycatch语句的格式如下:,例子4给出了trycatch语句的用法,程序运行效果如图6.4,try 包含可能发生异常的语句 catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) ,2019/6/14,10,6.3.2 自定义异常类,我们也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。 一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。,注:throw是Java的关键字,该关键字的作用就是抛出异常. throw和throws是两个不同的关键字。,2019/6/14,11,例子5,People类中有一个设置age的方法,如果向该方法传递小于1或大于160的整数,方法就抛出异常。程序运行效果如图6.5。 Example6_5.java People.java IntegerException.java,2019/6/14,12,6.4 finally子语句,本节通过一个例子熟悉带finally子语句的trycatch语句,语法格式如下: try catch(ExceptionSubClass e) finally 其执行机制是:在执行trycatch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。 但需要注意以下两种特殊情况: 如果在trycatch语句中执行了return语句,那么finally子语句仍然会被执行。 trycatch语句中执行了程序退出代码,即执行System.exit(0);,则不执行finally子语句。,2019/6/14,13,例子6,例子6中模拟向货船上装载集装箱,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异常,货船都需要正点启航。运行效果如图6.6。代码链接,2019/6/14,14,6.5 断言,断言语句用于调试代码阶段。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。 使用关键字assert声明一条断言语句,断言语句有以下两种格式: assert booleanExpression; assert booleanExpression:messageException;,2019/6/14,15,例子7,例子7在计算若干个正数的和时使用了断言语句,运行效果如图6.7。代码链接,2019/6/14,16,6.6 小结,1Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 2和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。 3和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。 4Java的异常可以出现在方法调用过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中职数学高教版(2021·十四五)基础模块 下册5.3 对数教学设计及反思
- 九年级道德与法治上册 第二单元 民主与法治 第三课 追求民主价值 第2框 参与民主生活教学设计 新人教版
- 三年级信息技术上册 四季的脚步-初识“画图”软件教学设计 鄂教版
- 人教版初中历史与社会七年级上册 4.1 美国政治的心脏 华盛顿 教学设计
- 人音版八年级音乐上册(简谱)第二单元《云中的城堡》教学设计
- 初中物理沪科版(2024)九年级全册第一节 感受信息教案
- 六年级语文上册 第三单元 语文园地三教学设计 新人教版
- 人音版三年级音乐上册(简谱)第5课《演唱 唱给妈妈的摇篮曲》教学设计
- 人教版八年级信息技术下册第一单元第2课画基本几何图形教学设计
- 人教统编版10.2 归去来兮辞并序教案
- 财务管理有趣的知识普及
- 云肩完整版本
- 2024年10月自考04741计算机网络原理试题及答案含评分参考
- 数字化技术在中国会计师事务所中应用的研究报告 2024
- 人民医院手术室装修及安装方案
- 《兰亭集序》公开课一等奖省公开课获奖课件说课比赛一等奖课件
- 2025届高考专题复习:课内外古诗词对比阅读
- 企业创业孵化与创新基地管理制度
- 2025届高考物理讲座课件:《对标三新寻求突破》
- 静脉输液技术课件
- 临榆炸鸡腿加盟合同范本
评论
0/150
提交评论