java 第七章 内部类与异常类

来源:互联网 发布:淘宝旺旺聊天刷单禁词 编辑:程序博客网 时间:2024/06/05 04:21

1. java支持在一个类中定义另一个类,这样的类称作内部类。而包含内部类的类被成为内部类的外嵌类

2. 内部类与外嵌类的重要关系:(1)内部类的外嵌类的成员变量内部类中仍然有效内部类中的方法也可以调用外嵌类中的方法;(2)内部类的类体中不可以声明类变量和类方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员;(3)内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。

3. Java编译器生成的内部类的字节码文件的名字和通常的类不同,内部类对应的字节码文件的名字格式是“外嵌类名$内部类名”。

4. 内部类可以修饰为static内部类,那么static内部类就是外嵌类中的一种静态数据类型,程序可以在其他类中使用static内部类来创建对象,static内部类不能操作外嵌类中的实例成员变量

5. 非内部类不可以是static类。

6. Java允许我们直接使用一个类的子类的类体创建一个子类对象,也就是说,创建子类对象时,除了使用父类的构造方法外还有类体,此类体被认为是一个子类去掉类声明后的类体,称作匿名类匿名类就是个子类,由于无名可用,所以不可能用匿名类声明对象,但却可以直接用匿名类创建一个对象

7. 匿名类特点:(1)匿名类可以继承父类的方法也可以重写父类的方法;(2)使用匿名类时,必然是在某个类中直接用匿名类创建对象,因此匿名类一定是内部类;(3)匿名类可以访问外嵌类中的成员变量和方法,匿名类的类体中不可以声明static成员变量和static方法;(4)由于匿名类是一个子类,但没有类名,所以在用匿名类创建对象时,要直接使用父类的构造方法。

8. 尽管匿名类创建的对象没有经过类声明步骤,但匿名对象的引用可以传递给一个匹配的参数。

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

new Computable(){

   实现接口的匿名类的类体

};

10. 如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的参数,类体必须要重写接口中的全部方法

11. Java使用throw关键字抛出一个Exception子类的实例表示异常发生。如,java.lang包中的Integer类调用其类方法public static int parseInt(String s)可以将“数字”格式的字符串如“6789”转化为int型数据,但是当试图将字符串“ab89”转换成数字时,例如:int number=Integer.parseInt(“ab89”);方法parseInt()在执行过程中就会抛出NumberFormatException对象,即程序运行出现NumberFormatException异常。

12. Java允许定义方法时声明该方法调用过程中可能出现的异常,即允许方法调用过程中抛出异常对象,终止当前方法的继续执行。

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

public String  getMessage();只显示原因,不显示类名

public void printStackTrace();跟踪异常发生时堆栈的内容

public String toString();显示类名和原因

14. java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try部分将立刻结束执行,转向执行相应的catch部分。

15. try-catch格式如下:

try{

   包含可能发生异常的语句

}

Catch(ExceptionSubClass1 e){

}

Catch(ExceptionSubClass2 e){

}

16. 各个catch参数中的异常类都是Exception的某个子类,表明try部分可能发生的异常,这些子类之间不能有父子关系,否则保留一个含有父类参数的catch即可。

17. 程序必须在try-catch块语句中调用可能发生异常的方法,其中catch的作用就是捕获throw关键字抛出的异常。

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

(1)assertbooleanExpression; 当booleanExpression的值是true时,程序从断言语句处继续执行,反之停止;

(2)assert BooleanExpression:messageException; 当booleanException的值是true时,程序从断言语句处继续执行;值是false时,程序从断言语句处停止执行,并输出messageException表达式的值,提示用户出现了怎样的问题。

19.当使用java解释器直接运行应用程序时,默认地关闭断言语句,在调式程序时可以使用-ea启用断言语句,如:java –ea mianClass

20.finally子语句的try-catch语句,语法格式如下:

try{}

catch{ExceptionSubClass e}{}

finally{}

执行机制是:在执行try-catch语句后,执行finally子语句,也就是说,无论在try部分是否发生过异常,finally子语句都会被执行。

21.但要注意两种特殊情况:

(1)如果在try-catch语句中执行了return语句,那么finally子语句仍然会被执行;(2)try-catch语句中执行了程序退出代码,即执行System.exit(0);,则不执行finally子语句(当然包括后面的所有语句)。

 

原创粉丝点击