Java扩展类并默认实现接口

时间:2018-09-22 19:17:50

标签: java interface default extends

我上过课:

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) 对于我来说奇怪的是,在编译过程中没有采用默认的实现。即使在扩展类中,方法也应该是私有的吗?

0 个答案:

没有答案