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”
答案 0 :(得分:0)
因为您没有为类a.b
明确实现m
接口方法c
。
在您的第一个示例中,当您致电v.m
时,正在针对m
的实例直接调用c
。
因为m
中有c
方法,编译器很高兴你为类b
实现了接口c
在你的第二个例子中,你仍然在v
上调用c
,但由于a
是一个没有定义成员的空接口,只有一个子接口,编译器再次开心