当然不能,所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。 专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(楼下说的可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写),重载,继承.
你可以写那个同名的方法,但是在调用时,如果你用的子类对象的引用就使用子类对象,如果使用父类对象的引用,就调用父类的方法。如:public class T {
public static void main(String[] args) {
S s = new S();
P p = s;
P.a1();// 打印父类方法。
S.a1();// 打凶子类方法。
}
}class P {
public static void a1() {
System.out.println("父类方法");
}
}class S extends P {
public static void a1() {
System.out.println("子类方法 ");
}
}
上面这些答案.. 我不知道该怎么评价.. 我给你解释一下吧.. 现在你想一下 静态的方法是如何调用的.. 是类名打点直接调用这个方法吧..?比如A类有一个static的方法aaaa()我们要调用这个方法的时候 是不是这样调:A.aaaa();而不是实例化吧.. 不实例化也就不能用多态了.. 也就是所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例 既然没有机会去调用重写后的方法 你说呢.. 对于上面那位说"能"的朋友的回答, 他的代码.. 怎么说呢.. 既然你调用的时候 都是子类类名打点调用的方法.. 这算是重写么.. 当然了 看你怎么理解了.. 不过咱们所说的父类方法被重写 都是用于多态的.. 那我请问那位说"能"的朋友 你把静态方法重写了怎么用多态? [原创答案,复制可耻 -- l.a.r]
不能