【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()");
    }
}

下一篇文章:

相关推荐
巴拉巴拉~~几秒前
Flutter 通用下拉选择组件 CommonDropdown:单选 + 搜索 + 自定义样式
开发语言·javascript·ecmascript
ZHang......1 分钟前
LeetCode 1114. 按序打印
java·开发语言·算法
程序员欣宸3 分钟前
LangChain4j实战之四:集成到spring-boot
java·人工智能·spring boot
慧都小项9 分钟前
Parasoft Jtest 如何用 JSON 文件驱动Java 测试自动化
java·自动化·json
缺点内向14 分钟前
如何在 C# 中重命名 Excel 工作表并设置标签颜色
开发语言·c#·excel
Можно16 分钟前
深入理解 JavaScript 函数:分类、特性与实战应用
开发语言·javascript
淼淼76321 分钟前
工厂方法模式
开发语言·c++·windows·qt·工厂方法模式
Hui Baby31 分钟前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库
laozhoy133 分钟前
深入理解Go语言errors.As方法:灵活的错误类型识别
开发语言·后端·golang
周杰伦_Jay33 分钟前
【Go 语言】核心特性、基础语法及面试题
开发语言·后端·golang