很多同学在学习Java的时候,都听说过匿名内部类,那匿名内部类到底是什么呢?你可以挺过很多书或者其他教程说过匿名内部类是一个类或者一个接口的子类对象,又或者说匿名内部类是一个类的匿名子类等等,但是种种这些都是说说而已,今天千锋长沙Java培训讲师就来揭开匿名内部类神秘的面纱,让大家真真切切看到匿名内部类到底是什么?
首先我们写下面这么一个关于匿名内部类的代码,然后反编译查看.class文件的内容,就可以揭开匿名内部类神秘的面纱。
public class Test {
public static void main(String[] args) {
new Fu(){
@Override
public void method() {
System.out.println("匿名内部类重新抽象父类方法");
}
}.method();
}
}
abstract class Fu {
public abstract void method();
}
运行结果截图如下↓
好像看不出匿名内部类到底是什么?别着急,我们找到刚刚运行代码的.class文件,通过我们的Xjad软件反编译查看一下就可以知道真相。我们发现,.class文件多了一个叫Test$1.class,好奇怪,我们只是写了测试类Test和父类Fu,那么这个多出来的就是匿名内部类,我们反编译这个匿名内部类就可以知道真相↓
通过反编译对比,我们知道,匿名内部类,其实就是匿名的子类而已↓
以后,我们就可以大胆的说,匿名内部类,其实就是匿名的子类而已,只不过你隐藏在.class文件里面你看不到,所以叫匿名内部类。
相关文章
06.29抢座
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱