You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java:如何在不同文件中继承非静态内部类

如何让顶级类继承非静态内部类(不修改内部类为静态)

现有代码结构如下:

class A {
    class B {
    }
}

需要让另一个顶级类C继承B,且不能将B设置为静态类。

非静态内部类B的实例必须绑定到外部类A的实例上,因此继承B的顶级类C需要在构造时显式关联一个A的实例,具体实现如下:

1. 定义继承A.B的顶级类C

class C extends A.B {
    // 构造方法接收A的实例,用于初始化父类B
    public C(A a) {
        a.super(); // 核心:通过外部类实例调用内部类的构造方法
    }
}

2. 创建C实例的方式

要创建C的对象,必须先实例化A,再把A的实例传入C的构造方法:

public class Main {
    public static void main(String[] args) {
        A aInstance = new A();
        C cInstance = new C(aInstance);
    }
}

原理说明

非静态内部类B的构造方法默认会隐式持有外部类A的引用,当子类C继承B时,必须显式提供这个A的实例,通过a.super()的语法完成父类B的初始化,这样C的实例就和传入的A实例绑定,既满足非静态内部类的依赖要求,又不需要修改B为静态类。

内容的提问来源于stack exchange,提问作者kaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:42:08