可能重複:
Can we override static method in 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
方法,它提供了錯誤的「靜態方法不能被覆蓋「。但與評論它工作正常。所以,當我們創建對象並用這些實例調用靜態方法時,這些工作就很好。那麼區別是什麼呢??
你試圖做的事情根本沒有意義。爲什麼你想要另一個與現有名稱相同的靜態方法?只需要創建一個新名字。 – 2012-07-24 11:29:46