黑马程序员技术交流社区

标题: 父类中的静态方法在其子类被装载时会不会运行? [打印本页]

作者: 陆泽峰    时间: 2012-2-29 22:19
标题: 父类中的静态方法在其子类被装载时会不会运行?
class Insect {
  int i = 9;
  int j;
  Insect() {
    prt("i = " + i + ", j = " + j);
    j = 39;
  }
  static int x1 =  
    prt("static Insect.x1 initialized");
  static int prt(String s) {
    System.out.println(s);
    return 47;
  }
}
public class Beetle extends Insect {
  int k = prt("Beetle.k initialized");
  Beetle() {
    prt("k = " + k);
    prt("j = " + j);
  }
  static int x2 =
    prt("static Beetle.x2 initialized");
  static int prt(String s) {
    System.out.println(s);
    return 63;
  }
  public static void main(String[] args) {
    prt("Beetle constructor");
    Beetle b = new Beetle();
  }
}
  结果:Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 63
j = 39
请解释一下以上代码的运行结果,然后回答下父类中的静态方法在其子类被装载时会不会运行?
作者: 丁晓宇    时间: 2012-3-1 12:43
楼主的代码 把父类的方法写在子类的构造里,子类执行构造方法的时候会先执行父类的构造方法,这时候你再去调父类的静态自然而然就可以调用了。
只要有静态就以为着 jvm虚拟机运行的时候就加载进来了 , 什么时候运行取决于你什么时候调!




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