Следующее приводит к ошибке компилятора: «Требуется включающий экземпляр, содержащий Demo.A.B». Это обсуждается в: Требуется включающий экземпляр, который содержит <мою ссылку> . Итак, ответ: вы не можете этого сделать. Запишите его в свой собственный файл класса вместо вложенного класса.
package Demo;
import Demo.A.B;
public class Demo {
public static void main(String[] args) {
A test = new B();
}
}
Сломанный
Package Demo;
public class A {
public A() {
callMethod();
}
void callMethod() {
System.out.println("Called from A");
}
public class B extends A {
@Override
void callMethod() {
System.out.println("Called from B");
}
}
}
Рабочая
(A.java)
Package Demo;
public class A {
public A() {
callMethod();
}
void callMethod() {
System.out.println("Called from A");
}
}
(B.Java)
package Demo;
public class B extends A {
@Override
void callMethod() {
System.out.println("Called from B");
}
}