黑马程序员技术交流社区

标题: 关于重写的问题 [打印本页]

作者: 236gswqt    时间: 2014-6-26 16:32
标题: 关于重写的问题
     static修饰的方法能在子类中重写吗?

作者: 燿陚√揚葳    时间: 2014-6-26 16:44
不能,因为静态静态方法在类被装载时就已经加载,而非静态在运行时系统确定具体的内容。两种方法内存管理机制
作者: 燿陚√揚葳    时间: 2014-6-26 16:55
不能,因为静态静态方法在类被装载时就已经加载,而非静态在运行时系统确定具体的内容。两种方法内存管理机制完全不同,所以不能覆盖。



这个问题我也纠结过,以上解答也是从网上看到的,静态先与类存在,而非静态方法的重写是在类加载之后才会出现的所以说不同的两种机制。

你看下面的代码:



class A{
public static void show(){
  System.out.println("a show");
}
public void method(){
  System.out.println("a.method");
}
}
class B extends A{
public static void show(){
  System.out.println("b show");
}
public void method(){
  System.out.println("b.method");
}
}
public class Demo {

public static void main(String[] args){
  new B().method();//方法重写输出的是b.method
A a=new B();
  a.show();//静态方法,输出结果为a show,说明静态方法没有被重写,如果去掉两个静态就会输出b show了

不知道有没有解释清楚
作者: 王振2014    时间: 2014-6-26 16:58
显然不能啊




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