[英]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.