静的メソッドはオーバーライドできないとどこにでも書かれていますが、アクセス指定子をpublicからprotectedに減らすと、エラーが発生します。例えば
public class StaticOverrideFunda {
public static void foo(){
System.out.println("Parent Foo");
}
}
public class B extends StaticOverrideFunda{
protected static void foo(){
System.out.println("Child Foo");
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
B.foo();
}
}
それは言う
継承されたメソッドの可視性を下げることはできません
つまり、オーバーライドルールに従っているのですが、なぜfooがBクラスでオーバーライドされていないと言っているのでしょうか。なぜそれが隠れている/影になっているのであり、オーバーライドしていないと言うのですか?