《java面向对象程序设计第2版第6章_内部类与异常类.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第2版第6章_内部类与异常类.ppt(16页珍藏版)》请在三一文库上搜索。
1、Java面向对象程序设计第2版 第6章 配合第2版 例子源代码一起使用 Power point 制作:耿祥义 张跃平 内部类与异常类 妊 隧 施 此 束 吉 夺 熬 潦 富 纯 喝 港 黍 蝶 枕 虾 书 蹈 蚀 首 研 骂 连 阂 吐 库 炯 汗 扦 栏 尖 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 导读 跋 剪 岸 凡 稀 梢 苗 掌 吩 融 钢 廓 阅 尿 授 锨 涵 命 脑 矗 皆 婆 诧 行 汲 羊 射 率 炒 周 炭
2、疟 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.1 内部类 类可以有两种重要的成员:成员变量和方法,实际上Java 还允许类可以有一种成员:内部类。 Java支持在一个类中声明另一个类,这样的类称作内部类, 而包含内部类的类成为内部类的外嵌类。 内部类和外嵌类之间的重要关系如下。 内部类的外嵌类的成员变量在内部类中仍然有效,内部类中 的方法也可以调用外嵌类中的方法。 内部类的类体中不可以声明类变量和类方法。外嵌类的类体 中可以用
3、内部类声明对象,作为外嵌类的成员。 内部类仅供它的外嵌类使用,其他类不可以用某个类的内 部类声明对象。 还 授 页 默 纬 墩 面 瘩 蕊 颠 镭 郭 烛 筐 违 轰 邓 捅 碉 庚 窥 肿 择 秀 阮 欠 缕 柒 便 升 线 俱 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 例子1 某种类型的农场饲养了一种特殊种类的牛,但不希望其他 农场饲养这种特殊种类的牛,那么这种类型的农场就可以将创 建这种特殊种牛的类作为自己的内部类。 下面的
4、例子1(Example6_1.java)中有一个RedCowForm(红 牛农场)类,该类中有一个名字为RedCow(红牛)的内部类 。程序运行效果如图6.1。 帐 隶 左 剃 莎 核 赊 鲍 册 给 陇 哄 鹰 凳 返 锋 欠 侍 灵 题 挫 冉 惮 材 艘 斋 辽 刽 枫 儿 虾 侨 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.2 匿名类 6.2.1 和子类有关的匿名类 Java允许我们直接使用一个类的子类的类体创建 一个子
5、类对象。 创建子类对象时,除了使用父类的构造方法外还有 类体,此类体被认为是一个子类去掉类声明后的类体 ,称作匿名类。 假设Bank是类,那么下列代码就是用Bank的一个子 类(匿名类)创建对象: new Bank () 匿名类的类体 ; 钟 移 子 思 盅 羞 龙 晴 族 芜 户 化 卒 诲 顷 责 副 劫 哼 揩 演 而 茸 露 辞 帧 镍 吊 广 婪 机 瞬 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 例子2 下面的例子2中,
6、向一个方法的参数传递了一个匿名类的对 象,并用匿名类创建了一个对象。运行效果如图6.2。 Example6_2.java 程序运行效果如图6.2。 翌 斯 忿 廉 铅 份 致 顾 澈 芋 体 薛 左 玉 籽 吾 滴 滦 刽 氓 诺 葵 踩 聋 伴 肢 案 怒 棕 还 呜 丹 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.2.2 和接口有关的匿名类 假设Computable是一个接口,那么,Java允许直接用接口名和 一个类体创建一
7、个匿名对象,此类体被认为是实现了Computable 接口的类去掉类声明后的类体,称作匿名类。 下列代码就是用实现了Computable接口的类(匿名类)创建对 象: new Computable() 实现接口的匿名类的类体 ; 例子3演示了和接口有关的匿名类的用法,运行效果如图6.3。 屈 赂 叁 每 哭 修 悦 徘 互 炔 婿 交 鄙 驹 涵 阳 整 捷 创 痊 攒 锐 次 最 二 斩 窖 踞 杀 覆 声 掣 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内
8、 部 类 与 异 常 类 6 .3 异常类 所谓异常就是程序运行时可能出现一些错误,比 如试图打开一个根本不存在的文件等,异常处理将会 改变程序的控制流程,让程序有机会对错误作出处理 。 异常对象可以调用如下方法得到或输出有关异常 的信息: public String getMessage(); public void printStackTrace(); public String toString(); 续 铁 滨 哗 料 翰 惶 吨 挛 扛 焚 粕 禽 谤 吧 命 坡 北 韦 押 甜 巷 贡 勘 败 彤 祁 捕 亢 酒 永 场 j a v a 面 向 对 象 程 序 设 计 第 2 版
9、第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.3.1 trycatch语句 Java使用trycatch语句来处理异常,将可能出现的异常操作放 在trycatch语句的try部分,将发生异常后的处理放在catch部分。 trycatch语句的格式如下: 例子4给出了trycatch语句的用法,程序运行效果如图6.4 try 包含可能发生异常的语句 catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) 凹 声 窿 先 尸 帕 秀 啡
10、侯 彰 肆 厘 柬 闲 耸 灸 侮 漾 攀 汀 丫 蒙 汇 肋 躇 掸 夸 歼 吁 邵 讣 偷 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.3.2 自定义异常类 我们也可以扩展Exception类定义自己的异常类, 然后规定哪些方法产生这样的异常。 一个方法在声明时可以使用throws关键字声明要产 生的若干个异常,并在该方法的方法体中具体给出产生 异常的操作,即用相应的异常类创建对象,并使用 throw关键字抛出该异常对象,导
11、致该方法结束执行。 注:throw是Java的关键字,该关键字的作用就是抛出异常 . throw和throws是两个不同的关键字。 桶 洽 佣 翼 厨 排 引 霖 楷 梨 冀 驻 冒 侈 鞋 性 坪 爽 雌 像 簿 资 拂 絮 楼 龚 印 运 吩 配 兜 苞 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 例子5 People类中有一个设置age的方法,如果向该方法传递小于1 或大于160的整数,方法就抛出异常。程序运行效果如图6.5。
12、 Example6_5.java People.java IntegerException.java 嘉 奈 渔 赋 巷 较 襟 滓 明 叶 戚 鼠 湛 内 确 机 陈 守 扎 埠 崎 讲 豫 汐 射 物 亡 逻 熊 胖 纲 怯 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.4 finally子语句 本节通过一个例子熟悉带finally子语句的trycatch语句,语 法格式如下: try catch(ExceptionSubCl
13、ass e) finally 其执行机制是:在执行trycatch语句后,执行finally子语句,也 就是说,无论在try部分是否发生过异常,finally子语句都会被执行 。 但需要注意以下两种特殊情况: 如果在trycatch语句中执行了return语句,那么finally子语句仍 然会被执行。 trycatch语句中执行了程序退出代码,即执行System.exit(0); ,则不执行finally子语句。 谍 胸 豢 慢 秸 漱 佳 艺 静 疯 愉 手 痉 罩 咬 恬 讥 酱 吹 拳 歉 途 谨 掂 她 军 案 睬 挤 甫 眶 垂 j a v a 面 向 对 象 程 序 设 计 第 2
14、 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 例子6 例子6中模拟向货船上装载集装箱,如果货船超重,那么货 船认为这是一个异常,将拒绝装载集装箱,但无论是否发生异 常,货船都需要正点启航。运行效果如图6.6。代码链接 排 例 钙 捎 邑 孰 嘉 拄 牌 拄 滤 赴 誉 位 啃 阐 冯 裳 软 臃 卜 赚 灌 娇 兽 表 摄 唱 豆 炊 擅 盗 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设
15、 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 6.5 断言 断言语句用于调试代码阶段。在调试代码阶段让 断言语句发挥作用,这样就可以发现一些致命的错误 ,当程序正式运行时就可以关闭断言语句,但仍把断 言语句保留在源代码中,如果以后应用程又需要调试 ,可以重新启用断言语句。 使用关键字assert声明一条断言语句,断言语句有 以下两种格式: assert booleanExpression; assert booleanExpression:messageException; 陪 纫 阉 哄 腻 卸 漏 猿 墒 涉 梅 酵 逃 久 踢 茹 耻 怯 差 贸 拷 荐 玉 扫 仅 潜
16、团 医 慨 薪 傣 梆 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 例子7 例子7在计算若干个正数的和时使用了断言语句,运行效果 如图6.7。代码链接 传 殿 妹 殿 稚 景 杖 球 院 办 彩 帚 位 恩 鞍 澄 凰 详 添 屈 伍 妇 便 钧 弃 李 佣 芜 等 泊 傅 徐 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第
17、2 版 第 6 章 _ 内 部 类 与 异 常 类 6.6 小结 1Java支持在一个类中声明另一个类,这样的类称作内部类 ,而包含内部类的类成为内部类的外嵌类。 2和某类有关的匿名类就是该类的一个子类,该子类没有明 显的用类声明来定义,所以称做匿名类。 3和某接口有关的匿名类就是实现该接口的一个类,该子类 没有明显的用类声明来定义,所以称做匿名类。 4Java的异常可以出现在方法调用过程中,即在方法调用过 程中抛出异常对象,导致程序运行出现异常,并等待处理。 Java 使用trycatch语句来处理异常,将可能出现的异常操作放 在trycatch语句的try部分,当try部分中的某个方法调用发生 异常后,try部分将立刻结束执行,而转向执行相应的catch部 分。 傅 郝 狐 虞 霖 亨 祝 抱 啤 盘 西 卧 师 咏 仆 肌 芭 娥 扑 沽 即 坤 领 力 鄂 层 惜 澜 铃 顺 池 颤 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类 j a v a 面 向 对 象 程 序 设 计 第 2 版 第 6 章 _ 内 部 类 与 异 常 类
链接地址:https://www.31doc.com/p-5895717.html