为什么要使用匿名内部类?

1.为什么要使用匿名内部类

package com.example.testapp;

interface HelloWorld{	
    public void print();
}

public class NimingTest {
    public static void main(String args[]){
        PrintHelloWorld(new Weneed());
    }

    public static void PrintHelloWorld(HelloWorld hw) {//该方法实现打印内容,但是需要传入一个实现了HelloWorld接口的对象
        hw.print();
    }


}

class Weneed implements HelloWorld{ //新建一个类为了实现接口
    @Override
    public void print() {
        System.out.println("Hello World");
    }
}

上面的代码通过HelloWorld接口实现了输出Hello World的功能,但是为了实现接口,专门新建了一个类,而且只用了一次。

package com.example.testapp;

interface HelloWorld{
    public void print();
}

public class NimingTest {
    public static void main(String args[]){
        PrintHelloWorld(new HelloWorld() { //由于这个内部类没有名称,所以叫匿名内部类
            @Override
            public void print() {
                System.out.println("Hello World");
            }
        });
    }

    public static void PrintHelloWorld(HelloWorld hw) {
        hw.print();
    }


}

使用匿名内部类使代码更为简洁,而且也不会造成存储空间的浪费。

总的来说,当方法参数中需要传入 实现了某个接口的对象时,使用匿名内部类可以更加简便,不需要特地写一个额外的类。

2.匿名内部类的语法

匿名内部类的定义格式:
new 类名/接口/抽象类(){
        //继承的方法
}
例如
new HelloWorld(){  //实际上应该是 new A implements HelloWorld(), 省略了 A implements
			@Override
            public void print() {
                System.out.println("Hello World");
            }
}

猜你喜欢

转载自blog.csdn.net/weixin_47885879/article/details/106711365