A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sun7day1988 中级黑马   /  2015-10-29 17:03  /  2014 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子类继承父类,自己通过程序测试是继承了父类的静态方法的,但是为什么不能够对静态方法进行覆盖呢,一直很疑惑,求大神帮助!

评分

参与人数 1黑马币 +10 收起 理由
chuanzhibokepkh + 10 淡定

查看全部评分

14 个回复

倒序浏览
能复写吧,我刚才试了  你是不是 方法权限没注意?
回复 使用道具 举报
静态方法是随着类一起加载到方法区的,而且只能被赋值一次,也就是只能被执行一次,可以说你没机会把它覆盖。
回复 使用道具 举报
Static 修饰的成员方法是随着类的加载而加载的。在子类初始化之前,父类要首先初始化完成,即Static也随之加载。所以子类不能重写父类的静态方法。因为够不到!!
回复 使用道具 举报
你应该懂了/...
回复 使用道具 举报
赞一个afhoighnaegnog
回复 使用道具 举报
学习了。
回复 使用道具 举报
很特殊的角度 学习了
回复 使用道具 举报
板凳 回答的好。学习了
回复 使用道具 举报
静态方法不存在多态,也就不存在覆盖
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 Fu f = new Zi();
  4.                 f.show();
  5.         }
  6. }
  7. class Fu{
  8.         public static void show(){
  9.                 System.out.println("Fu...show");
  10.         }
  11. }
  12. class Zi extends Fu{
  13.         public static void show(){
  14.                 System.out.println("Zi...show");
  15.         }
  16. }
复制代码

运行结果是"Fu...show"
如果改成  Zi z = new Zi();
              z.show();
运行结果是"Zi...show"
这样说明他们不存在覆盖,看引用是谁就运行谁的方法
回复 使用道具 举报
同求解答,看的复习题,给的答案不是很明确
回复 使用道具 举报
看了回复,学习深了
回复 使用道具 举报
原因是初始化的顺序的问题吧,精通修饰的东西应该在类加载之前把
回复 使用道具 举报
静态方法在类加载阶段就已经明确了的了,所以不存在动态与静态绑定,当然是不能被重写的!
回复 使用道具 举报
静态修饰的变量和函数,先于对象存在,因此不能覆盖
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马