小编And*_*rey的帖子

为什么接口默认方法被父私有方法遮蔽?

我不明白为什么下面的示例会抛出 IllegalAccessError 异常。foo()中的方法Parent不能被 继承Child,因为它是私有的。但尝试调用默认方法foo()会导致异常。

public class Parent {
    private void foo() {
        System.out.println("Parent-foo");
    }
}

interface Boo {
    default void foo() {
        System.out.println("Boo-foo");
    }
}

class Child extends Parent  implements Boo {
    public static void main(String[] args) {
        new Child().foo();  // runtime IllegalAccessError;
    }
}
Run Code Online (Sandbox Code Playgroud)

java interface default-method

5
推荐指数
0
解决办法
44
查看次数

标签 统计

default-method ×1

interface ×1

java ×1