版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/23,1,Java面向对象程序设计第2版 第6章,配合第2版 例子源代码一起使用,Power point 制作:耿祥义 张跃平,内部类与异常类,2020/7/23,2,导读,2020/7/23,3,6.1 内部类,类可以有两种重要的成员:成员变量和方法,实际上Java还允许类可以有一种成员:内部类。 Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下。 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声
2、明对象,作为外嵌类的成员。 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。,2020/7/23,4,例子1,某种类型的农场饲养了一种特殊种类的牛,但不希望其他农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创建这种特殊种牛的类作为自己的内部类。 下面的例子1(Example6_1.java)中有一个RedCowForm(红牛农场)类,该类中有一个名字为RedCow(红牛)的内部类。程序运行效果如图6.1。,2020/7/23,5,6.2 匿名类 6.2.1 和子类有关的匿名类,Java允许我们直接使用一个类的子类的类体创建一个子类对象。 创建子类对象时,除了使用父类的构造
3、方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。 假设Bank是类,那么下列代码就是用Bank的一个子类(匿名类)创建对象: new Bank () 匿名类的类体 ;,2020/7/23,6,例子2,下面的例子2中,向一个方法的参数传递了一个匿名类的对象,并用匿名类创建了一个对象。运行效果如图6.2。 Example6_2.java 程序运行效果如图6.2。,2020/7/23,7,6.2.2 和接口有关的匿名类,假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体
4、,称作匿名类。 下列代码就是用实现了Computable接口的类(匿名类)创建对象: new Computable() 实现接口的匿名类的类体 ; 例子3演示了和接口有关的匿名类的用法,运行效果如图6.3。,2020/7/23,8,6 .3 异常类,所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。 异常对象可以调用如下方法得到或输出有关异常的信息: public String getMessage(); public void printStackTrace(); public String toStrin
5、g();,2020/7/23,9,6.3.1 trycatch语句,Java使用trycatch语句来处理异常,将可能出现的异常操作放在trycatch语句的try部分,将发生异常后的处理放在catch部分。 trycatch语句的格式如下:,例子4给出了trycatch语句的用法,程序运行效果如图6.4,try 包含可能发生异常的语句 catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) ,2020/7/23,10,6.3.2 自定义异常类,我们也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。 一个方法
6、在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。,注:throw是Java的关键字,该关键字的作用就是抛出异常. throw和throws是两个不同的关键字。,2020/7/23,11,例子5,People类中有一个设置age的方法,如果向该方法传递小于1或大于160的整数,方法就抛出异常。程序运行效果如图6.5。 Example6_5.java People.java IntegerException.java,2020/7/23,12,6.4 final
7、ly子语句,本节通过一个例子熟悉带finally子语句的trycatch语句,语法格式如下: try catch(ExceptionSubClass e) finally 其执行机制是:在执行trycatch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。 但需要注意以下两种特殊情况: 如果在trycatch语句中执行了return语句,那么finally子语句仍然会被执行。 trycatch语句中执行了程序退出代码,即执行System.exit(0);,则不执行finally子语句。,2020/7/23,13,例子6,例子6中模拟向
8、货船上装载集装箱,如果货船超重,那么货船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异常,货船都需要正点启航。运行效果如图6.6。代码链接,2020/7/23,14,6.5 断言,断言语句用于调试代码阶段。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。 使用关键字assert声明一条断言语句,断言语句有以下两种格式: assert booleanExpression; assert booleanExpression:messageException;,2020/7/23,15,例子7,例子7在计算若干个正数的和时使用了断言语句,运行效果如图6.7。代码链接,2020/7/23,16,6.6 小结,1Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。 2和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。 3和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。 4Java的异常可以出现在方法调用过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北某高校外国语学院教师招聘2人模拟试卷附完整答案详解(各地真题)
- 2026年广东官洲街道招聘公益性岗位1人的笔试题库(夺分金卷)附答案详解
- 2026江西南昌市第一医院(南昌大学第三附属医院)高层次人才自主招聘15人备考题库及完整答案详解(夺冠系列)
- 2026湖南长沙市直事业单位第一批公开招聘(选调)工作人员70人考前冲刺试卷含答案详解【突破训练】
- 2026福建龙岩学院数学与信息工程学院人事代理制人员招聘2人(二)模拟试卷及参考答案详解【基础题】
- 2026上海市医疗保险事业管理中心招聘辅助人员1人笔试题库(满分必刷)附答案详解
- 2026中国人民解放军驻赣某单位劳务派遣人员招聘5人考前冲刺密卷审定版附答案详解
- 2026湖南长沙工业学院招聘二级学院院长笔试题库带答案详解(综合卷)
- 2026四川省放射影像研究所项目制科研助理招聘1人模拟试卷附参考答案详解(综合卷)
- 2026广东惠州市惠东县招聘第二批公办学校教师22人考前冲刺密卷及参考答案详解【突破训练】
- 2026年《医疗器械经营监督管理办法》培训试卷(+答案)
- 2026山东临沂城市职业学院临沂城市职业学院招聘专任教师、公共课教师及教辅人员113人考试备考题库及答案详解
- 2026湖北武汉市宏泰集团所属湖北宏泰私募股权基金管理有限公司投资经理岗位招聘6人模拟试卷有完整答案详解
- 1.1 书写恢弘史诗 课件 2025-2026学年统编版道德与法治 九年级上册
- 《中华人民共和国生态环境法典》测试题
- 电缆敷设及接线作业指导书培训
- 2026庐山云雾茶产业集团有限公司社会招聘工作人员16人备考题库含答案详解(研优卷)
- 2026年农药经营许可测试题及答案
- 2026中国数联物流信息有限公司(上海)岗位招聘笔试历年参考题库附带答案详解
- JJF(石化)084-2023润滑油蒸发损失测定仪(诺亚克法)校准规范
- 建筑加固工程全套资料
评论
0/150
提交评论