201711671111 《Java程序设计》第七章学习总结
1.内部类
- JAVA支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。
- 内部类和外嵌类关系如下:①内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。②内部类的类体不可以声明类变量和类方法。外嵌类场地类体可以用内部类声明对象,作为外嵌类的成员。③内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。
- 外嵌类和内部类在编译时,生成两个.class文件。
- 内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
2.匿名类
- Java允许我们直接使用一个类的子类的类体创建一个子类对象。
- 创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类。
- 匿名类有如下特点:①匿名类可以继承父类的方法也可以重写父类的方法。②匿名类一定是内部类。③匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法。④由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法。
3.与接口有关的匿名类
- 假设Computable是一个接口,那么,Java允许直接用接口名和一个类体创建一个匿名对象,此类体被认为是实现了Computable接口的类去掉类声明后的类体,称作匿名类。
- 下列代码就是用实现了Computable接口的类(匿名类)创建对象:
new Computable() {
实现接口的匿名类的类体
} ;
- 如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,类体必须重写接口中的全部方法。
4.异常类
- 所谓异常就是程序运行时可能出现一些错误。Java允许定义方法时声明该方法调用过程中可能出现异常,既允许方法调用过程中抛出异常对象,终止当前方法的继续执行。
- Java使用throw关键字跑出一个Exception子类的实例比搜地异常发生。
- 异常对象可以调用如下方法得到或输出有关异常的信息:
– public String getMessage();
– public void printStackTrace();
– public String toString();
5.try-catch语句
- Java使用try~catch语句来处理异常,将可能出现的异常操作放在try~catch语句的try部分,将发生异常后的处理放在catch部分。
- try~catch语句的格式如下:
try {
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e) {
…
}
catch(ExceptionSubClass2 e) {
…
}
- 带finally子语句的try~catch语句,语法格式如下:
try{}
catch(ExceptionSubClass e){ }
finally{}
其执行机制是在执行try~catch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。
6.自定义异常类
- 一个方法不处理它产生的异常,而是沿着调用层次向上传递,由调用它的方法来处理这些异常,叫声明异常.
- 声明异常的方法:在产生异常的方法名后面加上要抛出(throws)的异常的列表:
如:void compute(int x) throws ArithmeticException
{//这里有异常发生,但是并没有处理…}
- 一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。
7.断言
- 断言语句用于调试代码阶段。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,但仍把断言语句保留在源代码中,如果以后应用程又需要调试,可以重新启用断言语句。
- 使用关键字assert声明一条断言语句,断言语句有以下两种格式:
–assert booleanExpression;
–assert booleanExpression:messageException;