私はOCAのために勉強しています。私は頭の中で遭遇するすべての質問に対して答えを見つけようとします。抽象クラスはインタフェースのメソッドを隠すか、またはオーバーライドしますか?
これはコードです:私はクラスFoo
で上書きする必要はありません。このような状況で
interface InterfaceA {
public default Number method(){
return 5;
}
}
abstract class AbstractB {
public Long method() {
return 3L;
}
}
public class Foo extends AbstractB implements InterfaceA {
public static void main(String[] args) {
System.out.println(new Foo().method());
}
}
}
。 私はクラスFoo
で明示的にオーバーライドする必要がある同じメソッドで2つのインターフェイスを実装する場合は知っています。上記の例では、結果はAbstractB
(3)です。私の質問:インターフェイスからメソッドを暗黙的にオーバーライドまたは隠す抽象クラスですか? からではなく、Foo
の結果がAbstractB
の結果を出力する理由は何ですか?この特定の場合println
プリント3
への呼び出しで
オーバーライドまたは隠蔽されていない理由は分かりますが、Fooクラスがインターフェイスからではなく親クラスから結果を取得するのはなぜですか? – apotalion
@apotalion編集をご覧ください。 – dasblinkenlight