一、匿名内部类
1、匿名内部类 :是内部类的简化写法。它的本质是一个带具体实现的 父类或者父接口的 匿名的 子类对象。
开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,
-
定义子类
-
重写接口中的方法
-
创建子类对象
-
调用重写后的方法
我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快捷方式。
前提
匿名内部类必须继承一个父类或者实现一个父接口。
格式
2、使用方式
以接口为例,匿名内部类的使用,代码如下:
定义接口:
public interface A {
public void test();
}
创建B类实现接口A:
public class B implements A {
@Override
public void test(){
System.out.println("b实现a接口");
}
}
创建匿名内部类,并调用:
public class TestB {
public static void main(String[] args) {
//第一种: 没有使用匿名内部类 直接创建A接口的子类对象再调用方法
// A a = new B();
// a.test();
//第二种: 使用匿名内部类直接重写方法 接着调用
// A a = new A() {
//
// @Override
// public void test() {
// System.out.println("b实现接口a");
// }
// };
// a.test();
//第三种: 在方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递。代码如下:
// showA(a);
//第四种: 将第二种和第三种方法化简如下
showA(new A() {
@Override
public void test() {
System.out.println("b实现接口a");
}
});
}
public static void showA(A a){
a.test();
}
}