public class Outer {
public static class Inner extends Outer {
}
}
它似乎可以用我的openjdk8编译器进行编译,但是IntelliJ 2019.1抱怨: 无法访问外部
我认为这可能是IntelliJ的错误。
编辑:我确认这是一个IntelliJ错误。我通过安装带有捆绑的OpenJDK 11的IntelliJ解决了这个问题。
答案 0 :(得分:3)
这可以在OpenJDK 11中使用:
public class Outer {
public static void main(String[] args) {
Inner inner = new Inner();
inner.foo();
}
void foo() {
System.out.println("foo from Outer");
}
public static class Inner extends Outer {
@Override
void foo() {
System.out.println("foo from Inner");
}
}
}
输出:
foo from Inner
答案 1 :(得分:3)
它应该可以工作并且可以在我的机器上工作。
IntelliJ IDEA 2019.1.2
Build #IU-191.7141.44
jdk1.8.0_201
可以将公共嵌套类扩展为对子类可见的任何其他顶级类。绝对不是关于继承或可见性的Java问题。
这可能是IntelliJ问题,与它扫描软件包/项目的方式有关。确保不涉及其他Outer
类。是的,IDEA可能找到了另一个Outher
并偷偷地试图访问它。还要检查您的进口。
答案 2 :(得分:-2)
是的,可以。这是示例。
public class SampleClass {
static abstract class Test{
int num = 300;
public abstract void display();
}
class DemoClass extends Test{
public void display() {
System.out.println("Hi how are you");
}
}
public static void main(String args[]){
SampleClass obj = new SampleClass();
obj.new DemoClass().display();
}
}
o / p:嗨,你好吗