学习《java程序设计》第七章学习总结

7章 内部类与异常类

7.1    内部类

Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类

内部类的使用规则:

声明内部类如同在类中声明方法或变量一样,一个类把内部类看作是自己的成员。

外嵌类的类体中可以用内部类声明的对象,作为外嵌类的成员。

外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。

内部类的类体中不可以声明类变量和方法。

外嵌类和内部类在编译时,生成两个.class文件。 

7.2  匿名类

Java允许我们直接使用一个类的子类的类体创建一个子类对象

和子类有关的匿名类

创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。

和接口有关的匿名类

假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。

7.3   异常类

所谓异常就是程序运行时可能出现一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误作出处理。程序运行出现异常时,Java运行环境就用异常类Exception的相应子类创建一个异常对象,并等待处理。

异常对象可以调用如下方法得到或输出有关异常的信

 public String getMessage();
 public void printStackTrace();
 public String toString();

 

7.3.1   try~catch语句

Java使用try~catch语句来处理异常,将可能出现的异常操作放在try~catch语句的try部分,将发生异常后的处理放在catch部分。

  try {
      包含可能发生异常的语句
 }
 catch(ExceptionSubClass1  e) {
    …
 }
 catch(ExceptionSubClass2  e) {
    …
 }

finally子语句的try~catch语句,语法格式如下:

try{}
     catch(ExceptionSubClass e){ }
     finally{}

 

7.3.2 异常的声明

一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明异常.

声明异常的方法:在产生异常的方法名后面加上要抛出(throws)的异常的列表:

7.3.2   自定义异常类

我们也可以扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。

一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。

7.4    断言

断言语句用于调试代码阶段。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。

使用关键字assert声明一条断言语句,断言语句有以下两种格式:

assert booleanExpression;

assert booleanExpression:messageException;

总结

Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类成为内部类的外嵌类。

和某类有关的匿名类就是该类的一个子类,该子类没有明显的用类声明来定义,所以称做匿名类。

和某接口有关的匿名类就是实现该接口的一个类,该子类没有明显的用类声明来定义,所以称做匿名类。

Java使用try~catch语句来处理异常,将可能出现的异常操作放在try~catch语句的try部分,当try部分中的某个方法调用发生异常后,try部分将立刻结束执行,而转向执行相应的catch部分。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值