重複の可能性:
Java で静的メソッドをオーバーライドできますか?
基本クラスの静的メソッドをオーバーライドすることはできません。
実際に私は次のようなことを試しました:
// Base class
public class StaticExampleImpl {
protected String name="overriding";
public static void display(){
System.out.println("static method display : base class");
}
}
次に、派生クラスは次のとおりです。
//derived class
public class StaticDemo extends StaticExampleImpl {
// cannot override the static methods...
//@Override
public static void display(){
System.out.println("child!!! static method display");
}
public static void main(String[] args) {
StaticDemo d=new StaticDemo();
d.display(); // derived class display is called rather than Base class.
}
}
そのため、メソッドのコメントを外すと、@Override
「静的メソッドをオーバーライドできません」というエラーが発生します。しかし、コメントするとうまくいきます。したがって、オブジェクトを作成し、インスタンスで静的メソッドを呼び出すと、それらは正常に機能します。だから違いは何ですか??