一、内部类(类中套类)
在一个类中定义另一个类成为内部类
包含内部类的类称为内部类的外嵌类
内部类和外嵌类的关系:
- 内部类的外嵌类的成员变量和方法在内部类中有效
- 内部类不可以声明类变量和类方法
- 内部类仅供它的外嵌类使用
注:
内部类对应的字节码文件格式是“外嵌类名$内部类名”
内部类可以被修饰为static内部类,但不能操作外嵌类的实例成员变量
二、匿名类(创建对象)
是一个子类,不可以用来声明对象,但是可以创建一个对象
特点:
- 可以继承或者重写父类的方法
- 匿名类一定是内部类
- 创建对象时,直接使用父类的构造方法
new name(){ 类体 };
//name可以是类名,也可以是接口名(必须重写接口的全部方法)
三、异常类
使用throw关键字抛出一个Exception子类的实例表示异常发生
允许方法调用过程中抛出异常对象
异常对象可用如下方法得到异常信息:
- public String getMessage();
- public void printStackTrace();
- public String toString();
1.使用try-catch语句处理异常
try{
……
}
catch(ExceptionSubClass e){
……
}
2.可自定义异常类
throws声明要产生的异常
throw抛出异常对象
public class SubExceptionName extends Exception{
//SubExceptionName是自定义异常类名称
public SubExceptionName(xxxxx)//构造
}
throw new SubExceptionName(xxxxx);//使用
断言
调试代码,不用捕获异常来处理
- 声明断言语句,有两种格式:
assert booleanExpression;
//booleanExpression = false时结束执行
assert booleanExpression:message;//并输出message
- 启用断言语句:
java -ea mainClass