繁体   English   中英

如何创建一个子类的 object,它扩展了另一个 class,它位于另一个 class 内部?

[英]How to create an object of a subclass, that extends another class, which is inside yet another class?

public class A{
      public static class B{
             public class B1 extends B{
             //it contains a constructor and some methods
             }
       }
         public static void main(...){
       //create B1 object here
       }
}

当我拆分类时它工作正常,但我需要将它们放在一个 java 文件中。 如何在 class A 的主体中创建 B1 object?

to access non static inner class create object of outer class and access inner class using that object as below:

B b = new B();
B.B1 obj= b.new B1();

在此处访问此Java 内部 Class(嵌套类)链接并进行练习。

public class B1 extends B{

这是个错误。

内部类有一个秘密的、不可见的字段,是其父类的类型。 因此,您的 B1 class 都扩展了 B,并且有一个 B 类型的字段,该字段没有名称但无论如何都存在(并且您需要它来创建 B1 的任何实例)。 那是不对的。

您可能想要的是:

public static class B1 extends B { ... }

一旦是 static,你可以简单地写: new B1(); , 或者如果你没有直接导入 B1, new ABB1(); . 没有它,您只能在有一些this引用指向 B 实例的上下文中编写new ABB1() :例如在 B 的任何非静态方法中。在此类上下文之外,您必须写例如:

A.B b = new A.B();
b.new A.B.B1();

为了“设置”该隐藏字段(它将指向相同的 object b变量指向此处)。 但是……你不想要这个。 现在您的 B1 实例既是 B 又拥有 B,这将非常令人困惑。 只需将 B1 设为“静态”即可。 事实上,让所有内部类 static 除非你们两个 [A] 都非常确定你需要一个内部实例,并且 [B] 你完全理解它是如何工作的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM