java问题,子类能不能重写父类的静态方法??
答案:4 悬赏:80
解决时间 2021-02-21 22:58
- 提问者网友:若相守£卟弃
- 2021-02-21 18:39
java问题,子类能不能重写父类的静态方法??
最佳答案
- 二级知识专家网友:伤口狠精致
- 2021-02-21 18:47
当然不能,所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。 专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(楼下说的可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写),重载,继承.
全部回答
- 1楼网友:不服输的倔强
- 2021-02-21 19:56
上面这些答案.. 我不知道该怎么评价.. 我给你解释一下吧.. 现在你想一下 静态的方法是如何调用的.. 是类名打点直接调用这个方法吧..?比如A类有一个static的方法aaaa()我们要调用这个方法的时候 是不是这样调:A.aaaa();而不是实例化吧.. 不实例化也就不能用多态了.. 也就是所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例 既然没有机会去调用重写后的方法 你说呢.. 对于上面那位说"能"的朋友的回答, 他的代码.. 怎么说呢.. 既然你调用的时候 都是子类类名打点调用的方法.. 这算是重写么.. 当然了 看你怎么理解了.. 不过咱们所说的父类方法被重写 都是用于多态的.. 那我请问那位说"能"的朋友 你把静态方法重写了怎么用多态? [原创答案,复制可耻 -- l.a.r]
- 2楼网友:安稳不如野
- 2021-02-21 19:49
你可以写那个同名的方法,但是在调用时,如果你用的子类对象的引用就使用子类对象,如果使用父类对象的引用,就调用父类的方法。如: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("子类方法 ");
}
}
- 3楼网友:兮沫♡晨曦
- 2021-02-21 19:03
能
编写测试类如下:
class father {// 父类 public static void f() { system.out.println("我是父类的方法!!!"); } }
class child extends father {//子类 public static void f() { system.out.println("我是子类的方法!! 我重写了父类的静态方法!!!!"); } }
public class testfc {//测试类 public static void main(string[] args){ child.f(); father.f(); }
}
运行结果如下:
我是子类的方法!! 我重写了父类的静态方法!!!! 我是父类的方法!!!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯