- 内部类与外嵌类的关系:
①内部类可以直接调用其外嵌类的成员变量和方法
②内部类的类体中不能声明类变量和类方法
③内部类只能被它的外嵌类直接使用(其他类不能直接对它声明对象,需要外部类的对象来创建),除非用static修饰内部类
- 内部类有对应的字节码文件:“外嵌类名$内部类名.class”。
- static内部类不能操作外嵌类中的实例成员变量。
- 其他类创建另一个类的内部类对象的方法:"外嵌类名.内部类名 对象=new 外嵌类名(参数).new 内部类名(参数)”。
- 其他类创建另一个类的static内部类对象的方法:"外嵌类名.内部类名 对象=new 外嵌类名.内部类名(参数)”。
- 非内部类不可以是static类。
- 匿名类:①作为类有关的方法参数(当作该参数类型的类的子类)格式:方法(new 类名(){类体});
②作为接口有关的方法参数(当作实现该参数类型的接口的类)格式:方法(new 接口名(){类体});
- 匿名类是内部类:
①匿名类可以直接调用其外嵌类的成员变量和方法
②匿名类的类体中不能声明类变量和类方法
③匿名类可以继承或重写父类的方法(与类有关的匿名类)
④匿名类没有类名,所以创建对象时直接使用父类的构造方法(与类有关的匿名类)
⑤类体要重写接口中的全部方法(与接口有关的匿名类)
⑥匿名类都是非抽象的,而且只能继承一个类或实现一个接口
⑦匿名内部类不能是public,protected,private,static
- 异常类try-catch语句中,无论在try是否发生过异常或者执行return语句,finally子语句都会被执行,除非执行退出程序代码(System.exit(0))。
- throw关键字抛出一个Exception子类的实例表示异常发生。(throw和throws是两个不同的关键字)
- 异常对象可以调用如下方法得到或输出有关异常的信息(信息完整度由高到低):
①public void printStackTrace();
②public String toString();
③public String getMessage();
- 使用关键字assert声明一条断言语句→格式:
①assert boolean表达式;(值true程序从断言语句处继续执行;值false程序从断言语句处停止执行)
②assert boolean表达式:String表达式;(值true继续执行;值false停止执行并输出String表达式提示错误)
- JVM默认会关闭断言语句,需要用-ea启动断言语句,cmd:“java -ea 类名”来运行。