黑马程序员技术交流社区
标题:
为什么静态方法不能被覆盖?
[打印本页]
作者:
sun7day1988
时间:
2015-10-29 17:03
标题:
为什么静态方法不能被覆盖?
子类继承父类,自己通过程序测试是继承了父类的静态方法的,但是为什么不能够对静态方法进行覆盖呢,一直很疑惑,求大神帮助!
作者:
夕风秋凉
时间:
2015-10-29 21:32
能复写吧,我刚才试了 你是不是 方法权限没注意?
作者:
丰池
时间:
2015-10-29 21:43
静态方法是随着类一起加载到方法区的,而且只能被赋值一次,也就是只能被执行一次,可以说你没机会把它覆盖。
作者:
李志慧
时间:
2015-10-29 22:23
Static 修饰的成员方法是随着类的加载而加载的。在子类初始化之前,父类要首先初始化完成,即Static也随之加载。所以子类不能重写父类的静态方法。因为够不到!!
作者:
迷茫不堪的年纪
时间:
2015-10-29 22:29
你应该懂了/...
作者:
1026060341
时间:
2015-10-30 12:52
赞一个afhoighnaegnog
作者:
sharplance
时间:
2015-10-30 12:59
学习了。
作者:
吉吉粥
时间:
2015-10-30 14:00
很特殊的角度 学习了
作者:
浮光掠影
时间:
2015-10-30 14:09
板凳 回答的好。学习了
作者:
黑夜中那颗星
时间:
2015-10-30 14:56
静态方法不存在多态,也就不存在覆盖
public class Test {
public static void main(String[] args) {
Fu f = new Zi();
f.show();
}
}
class Fu{
public static void show(){
System.out.println("Fu...show");
}
}
class Zi extends Fu{
public static void show(){
System.out.println("Zi...show");
}
}
复制代码
运行结果是"Fu...show"
如果改成 Zi z = new Zi();
z.show();
运行结果是"Zi...show"
这样说明他们不存在覆盖,看引用是谁就运行谁的方法
作者:
xiexie758
时间:
2015-10-30 15:29
同求解答,看的复习题,给的答案不是很明确
作者:
刘彦宗
时间:
2015-10-30 19:04
看了回复,学习深了
作者:
didixyy
时间:
2015-10-30 20:05
原因是初始化的顺序的问题吧,精通修饰的东西应该在类加载之前把
作者:
chuanzhibokepkh
时间:
2015-11-1 01:05
静态方法在类加载阶段就已经明确了的了,所以不存在动态与静态绑定,当然是不能被重写的!
作者:
萧刹520
时间:
2015-11-1 12:29
静态修饰的变量和函数,先于对象存在,因此不能覆盖
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2