为什么在嵌套接口循环中我们不需要给予实现方法更高的访问权限?

时间:2017-12-12 12:00:43

标签: java

interface a {
    interface b {
        void m();
    }
}

class c implements a.b {
    void m() {
        System.out.println("hello1");
    }
}

class d extends c {
    public static void main(String[] args) {
        c v = new c();
        v.m();
    }
}

在这个例子中,它显示了分配较弱的权限,但是没有实现a.b,我只实现了a然后它会给出输出为什么会发生这种情况,背后的原因是什么?

interface a {
    interface b {
        void m();
    }
}

class c implements a {
    void m() {
        System.out.println("hello1");
    }
}

class d extends c {
    public static void main(String[] args) {
        c v = new c();
        v.m();
    }
}

op“hello1”

1 个答案:

答案 0 :(得分:0)

因为您没有为类a.b明确实现m接口方法c

在您的第一个示例中,当您致电v.m时,正在针对m的实例直接调用c。 因为m中有c方法,编译器很高兴你为类b实现了接口c

在你的第二个例子中,你仍然在v上调用c,但由于a是一个没有定义成员的空接口,只有一个子接口,编译器再次开心