黑马程序员技术交流社区
标题:
父类中的静态方法在其子类被装载时会不会运行?
[打印本页]
作者:
陆泽峰
时间:
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