75. interface A { void m() default ...; }
interface B extends A { void m()
! ! ! ! ! ! ! ! ! ! ! ! default ...; }
interface C extends A { }
class D implements B, C { ... }
// which is called when call D.m()...
75
76. interface A { void m() default ...; }
interface B extends A { void m()
! ! ! ! ! ! ! ! ! ! ! ! default ...; }
interface C extends A { }
class D implements B, C { ... }
// B.m used if no D.m
Bがm()をオーバーライドしているので、
より特化したBのm()が使われる
76
78. interface A { void m() default ...; }
interface B { void m() default ...; }
class C implements A, B {
public void m() {
m();
}
}
// what happens?
78
80. interface A { void m() default ...; }
interface B { void m() default ...; }
class C implements A, B {
public void m() {
A.super.m();
}
}
// A.m()を明示的に呼び出す必要がある(ダサい)
80