私の質問はプロジェクトから来ています。それで、少し無関係な詳細を抽象化させてください。
foo()とbar()の2つの保護された静的メソッドを持つJAVAパブリッククラスAがあります。メソッドfoo()は、本体でbar()を呼び出します。
public class A{
protected static foo(){
...
bar()
...
}
protected static bar(){print("A.bar()");}
}
これで、Aを拡張するクラスBもあります。Bでは、bar()をオーバーライドします。
class B extends A{
@Overrides
static protected bar(){ print("A.bar() extended");
}
最後に、Bのクラスからfoo()を呼び出します
class B extends A{
...
public static main(){foo()}
}
2つのポイントが理解できません1.コンパイラー(Eclipse)から、@Overrideアノテーションを削除するように求められます。なんで?2.最後に、main()は「A.bar()」を出力します。これは、解決されたbar()ターゲットがクラスAであることを意味しますが、bar()をオーバーライドし、Aのfoo()を使用して変更されたbar( )。どうやってやるの?
あなたの意見は何ですか?