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文件中。如何在类a的main中创建b1对象?
2条答案
按热度按时间a9wyjsp71#
public class B1 extends B{
这是个错误。内部类有一个秘密的、不可见的父类类型的字段。因此,b1类既扩展了b,又有一个类型为b的字段,该字段没有名称,但仍然存在(您需要它来生成b1的任何示例)。那不可能是对的。
你可能想要的是:
一旦它是静态的,您可以简单地编写:
new B1();
,或者如果您没有直接导入b1,new A.B.B1();
. 没有它,你只能写作new A.B.B1()
在这样的背景下this
引用将引用b的示例:例如在b的任何非静态方法中。在这种情况下,你必须写下例如:为了“设置”该隐藏字段(它将指向同一对象)
b
变量指向此处)。但是。。。你不要这个。现在你的b1示例都是一个b并且持有一个b,这将是非常混乱的。只需将b1设为“静态”。事实上,除非你们两个都非常确定自己需要一个内部示例,而且你们完全理解它是如何工作的,否则要使所有的内部类都是静态的。lf3rwulv2#
要访问非静态内部类,请创建外部类的对象,并使用该对象访问内部类,如下所示:
访问这里的java内部类(嵌套类)链接并练习。