【发布时间】:2012-07-24 11:16:10
【问题描述】:
我们不能覆盖基类的静态方法。
其实我试过这样的:
// 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 方法时,它会给出错误,因为“静态方法不能被覆盖”。但评论它工作正常。因此,当我们创建对象并使用实例调用静态方法时,它们可以正常工作。那么有什么区别呢??
【问题讨论】:
-
您尝试做的事情毫无意义。为什么你想要另一个与现有方法同名的静态方法?改个名字就好了。
标签: java