【内部类知识点(2)】
1. 匿名内部类
(1)语法格式
①new 父类(){
类的成员列表
}
②new 父类(实参列表){
类的成员列表
}
③new 父接口(){
类成员列表
}
(2)语法格式的解释:
①因为匿名内部类是没有名字的,一次性,只有唯一的对象,必须在声明类的同时就把对象创建好,否则后期就无法创建它的对象
即声明类的同时就把对象创建好了。
这句代码既声明了一个类,又创建了一个对象
②因为匿名内部类是没有名字的,所以创建对象时,只能用父类名或父接口名表示
同时表明了,新的匿名内部类的父类是谁,或父接口是谁
③子类在继承父类时,一定要在子类构造器的首行调用父类的构造器,默认调用父类的无参构造
2. 匿名内部类的成员
除了静态成员之外,其他成员都可以有
但是构造器无法手动编写,只能由编译器自动产生,因为类没有名字,就无法编写构造器,构造器名字必须和类名一致
通常情况下,匿名内部类不会有很多成员,而且一般不会定义自己的成员,通常都是重写父类或父接口的成员
3. 匿名内部类的使用
(1)匿名内部类的匿名对象.方法(用得少)
如:
new Object(){
void method(){
System.out.println("匿名内部类的使用");
}
}.method();
(2)多态引用,通过父类或父接口的变量接受匿名子类/匿名实现类的对象,然后多态调用
abstract class Base{
public abstract void method();
}
Base b = new Base(){
@override
public void method(){
System.out.println("匿名内部类重写父类的抽象方法method");
}
};
b.method();
(3)把匿名内部类的匿名对象直接作为另一个方法调用的实参
test(Base b = new Base(){
@override
public void method(){
System.out.println("匿名内部类重写父类的抽象方法method");
}
});
public static void test(Base b){
b.method;
}
【注解知识点】
1.什么是注解(annotation)
形式:@注解名。
注解是一种注释。
//和/**/注释是给人看的
注解是给编译器或其他程序看的,给程序添加一些描述性/辅助性信息
2. 系统最早、最基本的三个注解
(1)@override
(2)@Deprecated
标记某个方法、类已过时
即不建议继续使用,如果继续使用会有风险
(3)@SuppressWarnings
标记某个方法、类等抑制警告
3. Junit的@Test
(1)所在类必须是public的类,而且只能有唯一的无参构造方法
(2)@Test标记的方法必须是public,void,无参,非静态的方法
(3)默认不支持键盘输入
【异常知识点】
1. 什么是异常
程序在正常情况下可