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

如何在Java外部类A的main方法中创建嵌套子类B1的实例?

在A类的main方法中创建B1对象的解决方案

这个问题的核心是搞清楚Java中静态嵌套类和非静态内部类的实例化规则,我来给你拆解步骤并给出完整的可运行代码:

关键规则回顾

  • B是A的静态嵌套类(用static修饰):静态嵌套类不依赖外部类A的实例,直接可以通过A.B的方式访问和实例化。
  • B1是B的非静态内部类(没有static修饰):非静态内部类必须依附于其外部类(这里是B)的实例才能创建,不能直接通过类名实例化。

完整可运行代码示例

public class A {
    public static class B {
        // B1是B的非静态内部类,继承自B
        public class B1 extends B {
            // 示例构造函数
            public B1() {
                System.out.println("B1对象已创建");
            }
            
            // 示例方法
            public void testMethod() {
                System.out.println("B1的测试方法");
            }
        }
    }

    public static void main(String[] args) {
        // 1. 先创建静态嵌套类B的实例(不需要A的实例)
        A.B bInstance = new A.B();
        
        // 2. 通过B的实例来创建B1的对象
        A.B.B1 b1Instance = bInstance.new B1();
        
        // 测试调用B1的方法
        b1Instance.testMethod();
    }
}

代码解释

  1. 创建B的实例:因为B是A的静态嵌套类,所以直接使用new A.B()即可,不需要先实例化A。
  2. 创建B1的实例:B1是B的非静态内部类,必须通过B的实例来调用new B1(),语法格式为外部类实例.new 内部类(),也就是bInstance.new B1()。

如果B1的构造函数带有参数,只需要在new B1()时传入对应参数即可,比如:

public class B1 extends B {
    public B1(String message) {
        System.out.println("B1对象已创建,消息:" + message);
    }
}

在main方法中创建时:

A.B.B1 b1Instance = bInstance.new B1("Hello");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:16:54