【发布时间】:2021-03-13 22:31:15
【问题描述】:
我有一些代码(本质上它导入了这个其他类,它有一个我正在尝试访问的内部类),但它带来了这个错误:
file2.java:5: error: no enclosing instance of type file1 is in scope
public static class file3 extends file2.Inner {
“范围内没有 file1 类型的封闭实例”是什么意思?
代码如下:
package test;
import secret.file1;
public class file2 extends file1 {
public static class file3 extends file2.Inner {
public static void main(String[] args) {
file3 outer = new file3();
System.out.println(outer.x);
}
}
}
file1 的代码:
package secret;
public class file1 {
protected class Inner {
public int x = 8;
}
}
【问题讨论】:
-
我承认我不是 100% 确定错误消息,但我发现您的代码存在 2 个问题:1) 您没有定义名为
Inner的嵌套静态类,所以你怎么能延长它?您的 IDE 应该在extends file2.Inner上发出危险信号。 2)您缺少主要方法。您在file3中有一个名为main()的方法,但主方法的定义特征之一是它必须位于顶级类中,因此Java 不会将其识别为主方法。跨度> -
@user15358848 没错,我在考虑内部类,但
file3是嵌套类,而不是内部类。我的错。 -
@user15358848,我将其更改为 extends file1.Inner 但这似乎并不能解决错误。如果有任何帮助,我还编辑了帖子以包含 file1 类
标签: java inheritance inner-classes