




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第8章 内部类与异常类8.1 内部类在java中有时候会需要只定义了一两个方法的类或者接口,该类也只被某一个类调用(实现)。此时,我们可以使用内部类。内部类:在一个类中定义的另一个类外嵌类:包含内部类的类称为内部类的外嵌类。外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。8.1 内部类内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象例如:某种类型的农场饲养了一种牛,但不希望其他农场饲养,则,可以将这种牛作为该农场的内部类。(例8-1)8.1 内部类内部类还可
2、以定义在方法体内public class Hapiness interface Smiler public void smile(); public static void main(String args) class Happy implements Smiler public void smile() System.out.println(:-); Happy happy=new Happy(); happy.smile(); 8.2 匿名类有时候,内部类声明只为在类里面用它来创建一个对象(只用一次),因而,对很多情况而言,这个类有没有名字,或名字叫什么无关紧要。可有可无的东西,干脆不要
3、!为了简洁开发,类名使用匿名,程序员关心的只是它的实例名. 8.2 匿名类Runnable runner=new Runnable() public void run() / Run statememnt / 定义类 Public class Runner implements Runnable public void run() / do sth / 创建实例 Runner runner=new Runner(); 8.2.1与子类有关的匿名类如果没有显示声明一个类的子类,却又想用这个子类来创建对象,该怎么办?Java中可以直接用一个类的类体来创建一个子类对象该类体被认为是一个子类去掉类声明
4、以后的类体,称为一个匿名类8.2.1与子类有关的匿名类匿名类就是一个子类,由于无名可用,所以不可能用匿名类声明对象,但却可以直接用匿名类创建一个对象例如:Bank是类,则以下代码就是用Bank的一个子类(匿名类)创建对象New Bank()匿名类的类体;Class 匿名类 extends Bank定义匿名类对象 a= new 匿名类()8.2.1与子类有关的匿名类匿名类可以继承父类的方法也可以重写父类的方法使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类,匿名类可以访问外嵌类中的成员变量和方法匿名类的类体中不可以声明static成员变量和static方法8.2.1与子
5、类有关的匿名类由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法尽管匿名类创建的对象没有经过类声明步骤,但匿名对象的引用可以传递给一个匹配的参数,匿名类的常用的方式是向方法的参数传值。8.2.2 和接口有关的匿名类假设Computable是一个接口,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作与接口有关的匿名类。如:new Computable() 实现接口的匿名类的类体;8.2.2 和接口有关的匿名类如果方法的传递参数是一个接口,此时可以利用匿名类作为参数传递给该方法。例如Voi
6、d f(Computable x)/参数x的类型为接口在调用f方法时,可以传递一个匿名类给参数x:f(new Computable ()示例8-3演示了接口有关的匿名类的用法注意单纯的嵌套类一般不建议使用!但它在java核心类中都存在,如接口Map中的Entry,我们应该了解并能解读这种方法. 匿名类相对而言有用得多,在解耦合和事件回调注册中很常见,大家应该对它的运用融会贯通. 用得好都是优点,用得不好都是缺点。8.3 异常类所谓异常就是程序运行时可能出现一些错误Java的异常出现在方法调用过程中,即在方法调用过程中抛出异常对象,终止当前方法的继续执行,同时导致程序运行出现异常,并等待处理例如
7、,流对象在调用read方法读取不存在的文件时,会抛出异常对象:IOException,该对象可以通过调用以下方法得到或输出有关异常信息Public String getMessage();Public void printStackTrace();Public String toString();8.3.1 trycatch语句Java使用trycatch语句来处理异常将可能出现的异常操作放在trycatch语句的try部分将发生异常后的处理放在catch部分当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分trycatch语句可以由几个catch
8、组成,分别处理发生的相应异常8.3.1 trycatch语句trycatch语句的格式如下:各个catch参数中的异常类都是Exception的某个子类,表明try部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的catch即可。try 包含可能发生异常的语句catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) 8.3.2 自定义异常类通过扩展Exception类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中
9、具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。程序必须在trycatch块语句中调用能发生异常的方法,其中catch的作用就是捕获throw方法抛出的异常对象8.4断言断言语句在调试代码阶段非常有用,断言语句一般用于程序不准备通过捕获异常来处理的错误使用关键字assert声明一条断言语句,断言语句有以下两种格式:assert booleanExpression;assert booleanExpression:messageException;其中booleanExpression必须是求值为boolean型的表达式;messageException可以是求值为字符串的表达式。8.4断言assert booleanExpression;booleanExpression=false,程序从断言语句处停止执行booleanExpression=true,程序从断言语句处继续执行。assert booleanExpression:mes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年油田注剂项目发展计划
- 医院感染培训课件
- 2025标准的购销合同模板
- 音乐作品听辨与评价试题及答案
- 2025年度日用品采购销售合同模板
- 2025年四川私营企业职工劳动合同书
- 2025年水镁石项目建议书
- 2025年电力测量仪表项目合作计划书
- 2025会议承办授权合同示范文本
- 2025年电力系统安装服务项目建议书
- 2022年中国石油大学《化工原理二》完整答案详解
- 形势与政策电气 个人答案
- PHOTOSHOP图形图像处理课程标准
- 国开电大《Java语言程序设计》形考任务三答案
- 2022年全国大学生英语竞赛C类试题
- 装饰、装修施工方案
- 远盛水工重力坝辅助设计系统用户使用手册
- 矿井瓦斯抽采
- 立法学完整版教学课件全套ppt教程
- 五年级下册科学说课课件 -1.2 沉浮与什么因素有关 |教科版 (共28张PPT)
- 通用城实景三维数据生产项目技术设计书
评论
0/150
提交评论