java问题,子类能不能重写父类的静态方法??
4个回答
推荐于2017-05-23
展开全部
当然不能,所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。 专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(楼下说的可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写),重载,继承.
2013-07-17
展开全部
你可以写那个同名的方法,但是在调用时,如果你用的子类对象的引用就使用子类对象,如果使用父类对象的引用,就调用父类的方法。如: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("子类方法 ");
}
}
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("子类方法 ");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-17
展开全部
上面这些答案.. 我不知道该怎么评价.. 我给你解释一下吧.. 现在你想一下 静态的方法是如何调用的.. 是类名打点直接调用这个方法吧..?比如A类有一个static的方法aaaa()我们要调用这个方法的时候 是不是这样调:A.aaaa();而不是实例化吧.. 不实例化也就不能用多态了.. 也就是所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例 既然没有机会去调用重写后的方法 你说呢.. 对于上面那位说"能"的朋友的回答, 他的代码.. 怎么说呢.. 既然你调用的时候 都是子类类名打点调用的方法.. 这算是重写么.. 当然了 看你怎么理解了.. 不过咱们所说的父类方法被重写 都是用于多态的.. 那我请问那位说"能"的朋友 你把静态方法重写了怎么用多态? [原创答案,复制可耻 -- l.a.r]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-17
展开全部
不能
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询