Java 匿名内部类【重点】
一、匿名内部类
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(); } }