我上过课:
public interface A {
default void hello() {
System.out.println("A");
}
}
public class B {
private void hello() {
System.out.println("B");
}
}
public class C extends B implements A {}
public class Main {
public static void main(String[] args) {
C c = new C();
c.hello();
}
}
我期望输出结果为:“ A”,因为扩展类上的方法hello()是私有的(只能从对象类B进行访问),因此它将采用接口A的默认实现。
我运行了应用,结果是: 线程“主”中的异常java.lang.IllegalAccessError:试图从类Main访问方法B.hello()V 在Main.main(Main.java:9) 对于我来说奇怪的是,在编译过程中没有采用默认的实现。即使在扩展类中,方法也应该是私有的吗?