【Java】匿名内部类底层实现原理

目录

1.接口

[2. 抽象类](#2. 抽象类)


1.接口

MayiktA.java

java 复制代码
package com.面向对象.Demo40;

public interface MayiktA {
    void mayiktA();
}

Test01.java

java 复制代码
package com.面向对象.Demo40;

public class Test01 {
    public static void main(String[] args) {
        // new MayiktA接口 底层实际上 帮助我们创建了 实现类 实现了 MayiktA接口
        MayiktA mayiktA = new MayiktA() {
            @Override
            public void mayiktA() {
                System.out.println("匿名内部类-mayiktA()");
            }
        };
        mayiktA.mayiktA();
    }
    /**
     * 反编译技术
     *
     * Java源代码 编译成class文件
     * class文件 反编译为java源代码
     *
     * 接口和抽象类 是不能实例化
     * 匿名内部类底层 new 接口 底层还是 帮我们创建了 实现类 名称:null------------编译阶段实现
     */

}

Test01$1.class(通过反编译工具)

java 复制代码
package com.面向对象.Demo40;
final class null implements MayiktA {
  public void mayiktA() {
    System.out.println("匿名内部类-mayiktA()");
  }
}

2. 抽象类

MayiktB.java

java 复制代码
package com.面向对象.Demo40;

public abstract class MayiktB {
    public abstract void mayiktB();
}

Test02.java

java 复制代码
package com.面向对象.Demo40;

public class Test02 {
    public static void main(String[] args) {
        //java编译阶段 创建一个子类继承MayiktB抽象类
        MayiktB mayiktB = new MayiktB() {
            @Override
            public void mayiktB() {
                System.out.println("使用匿名内部类 调用抽象方法mayiktB()");
            }
        };
        mayiktB.mayiktB();
    }
}

Test02$1.class

java 复制代码
final class null extends MayiktB{
    public void mayiktB(){
        System.out.println("使用匿名内部类 调用抽象方法mayiktB()");
    }
}

下一篇文章:

相关推荐
Themberfue2 分钟前
Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized
java·开发语言·线程·多线程·synchronized·
plmm烟酒僧4 分钟前
Windows下QT调用MinGW编译的OpenCV
开发语言·windows·qt·opencv
测试界的酸菜鱼15 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
让学习成为一种生活方式19 分钟前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
晨曦_子画25 分钟前
编程语言之战:AI 之后的 Kotlin 与 Java
android·java·开发语言·人工智能·kotlin
Black_Friend33 分钟前
关于在VS中使用Qt不同版本报错的问题
开发语言·qt
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
希言JY1 小时前
C字符串 | 字符串处理函数 | 使用 | 原理 | 实现
c语言·开发语言
残月只会敲键盘1 小时前
php代码审计--常见函数整理
开发语言·php
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git