黑马程序员技术交流社区

标题: 关于覆盖静态的问题 [打印本页]

作者: 她只是过客    时间: 2014-8-30 18:04
标题: 关于覆盖静态的问题
为什么静态只能覆盖静态和被静态覆盖?
作者: 夜半风    时间: 2014-8-30 19:53
你想想静态是什么时候被加载进内存的 就明白了
作者: 旅行。    时间: 2014-8-30 19:56
class Super{   
   static String greeting(){   
      return "Good night";   
  }   
  
  String name(){   
     return "Richard";   
  }   
}   
  
class Sub extends Super{   
   static String greeting(){   
     return "Hello";   
  }   
  
  String name(){   
     return "Dick";   
  }   
}   
  
class Test{   
  public static void main(String[] args){   
    Super s = new Sub();   
    System.out.println(s.greeting()+","+s.name());   
  }   
}  

运行结果:Good night  Dick
          父类的静态方法+子类的非静态方法
作者: 她只是过客    时间: 2014-8-30 21:15
夜半风 发表于 2014-8-30 19:53
你想想静态是什么时候被加载进内存的 就明白了

问题是静态覆盖和被覆盖是双向都必须是静态  ,跟先后加载没有关系吧,
作者: 她只是过客    时间: 2014-8-30 21:16
旅行。 发表于 2014-8-30 19:56
class Super{   
   static String greeting(){   
      return "Good night";   

你这个我在网上看过了,这是说方法被覆盖静态被隐藏了,再看看问题吧
作者: ︶喂〆快到碗里    时间: 2014-8-30 21:22
静态变量和方法都是存储在静态方法区。是优先于对象存在,类加载的时候静态就进入了内存,非静态是创建对象的时候才进内存,所以静态的只能被静态覆盖!如果没创建对象,也就是非静态的成员没有进内存,怎么能覆盖静态呢?
作者: 黑马黄武先    时间: 2014-8-30 23:48
学习了,!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2