[Java- silver]デフォルトメソッドをオーバーライドしたメソッドから、元のメソッドの呼び出しについて
Q&A
Closed
Java- silver 合格についてデフォルトメソッドの継承について
ある参考書にて、下記の説明がありました。
1.サブインターフェースやインターフェースを直接実現したクラスでしか利用できない
2.オーバーライドしたメソッドからの呼び出しは、2つ以上の実現や継承の階層をまたいで行えない
例)
参考書に記載されている内容と実装して表示された結果に剥離があったので、詳細についてご教授いただきたいと考えております。
上記参考書の内容だと2つ以上の実現や継承の階層をまたいで行えないとあったのですが、エラーもなく表示がされました。
参考書の記載と私の認識にズレがあるのでしょうか。
表示された文字
Hello
Java
メインクラス)
public class Main {
public static void main(String[] args) {
A a = new C();
a.sample();
}
}
ソースコード1(Aクラス)
public interface A {
default void sample() {
System.out.println("Hello");
}
}
ソースコード2(Bクラス)
public interface B extends A {
}
ソースコード3(Cクラス)
public class C implements B {
@Override
public void sample() {
B.super.sample();
System.out.println("Java");
}
}