Java语言匿名内部类

Java语言匿名内部类教程

Java 语言 除了拥有内部类以外还有一个类叫匿名内部类。匿名内部类就是指没有一个具体名称的类,这个概念是在接口和抽象类的基础上发展起来的。

Java匿名内部类

语法

new 接口名称{}

参数

参数 描述
new 创建一个对象的关键字
接口名称 对应的接口名称

说明

我们知道,接口是不能够创建对象的,只有其实现类才能够创建对象,所以这边在接口名称后面的代码体里面,我们需要将具体的方法实现。

案例

我们定义一个接口

package com.haicoder.net.noinnerclass; public interface NoInnerInterface { public void printInfo(); }

定义一个类,用来调用接口

package com.haicoder.net.noinnerclass; public class NoInnerClass { public void fun1() { this.fun2(new NoInnerInterface() { @Override public void printInfo() { System.out.println("我就是传说中的匿名内部类"); } }); } public void fun2(NoInnerInterface noInnerInterface) { noInnerInterface.printInfo(); } }

创建一个测试类

package com.haicoder.net.noinnerclass; public class NoInnerInterfaceTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)\n"); new NoInnerClass().fun1(); } }

运行结果如下:

16 匿名内部类.png

我们可以看到在测试类里面,我们调用了 fun1 的方法,fun1 中调用了 fun2 方法,fun2 里面是一个接口对象,所以重写了里面的 printInfo 方法。在 fun2 中调用了该方法,所以打印了其中的信息。

Java匿名内部类总结

匿名内部类可以理解为将一个接口实例化,但是接口是不能被 new 的,所以我们在 new 的时候需要实现接口里面的所有的抽象方法。从而就将该 new 后面的方法块称为匿名内部类。