当前位置: 代码迷 >> Java相关 >> 继承与加载顺序,该如何解决
  详细解决方案

继承与加载顺序,该如何解决

热度:37   发布时间:2016-04-22 21:00:36.0
继承与加载顺序
thinking inJava中有如下代码,但是输出结果有点不清楚
//: Beetle.java
// The full process of initialization.
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();
}
} ///:~
该程序的输出如下:
static Insect.x initialized
static Beetle.x initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
k = 63
j = 39
------解决方案--------------------
这个加载顺序,感觉也是虚拟机规定的,记住了就好。
1. 父类静态成员、静态块
2. 子类的静态成员、静态块
3. 父类的非静态成员、非静态块
4. 父类构造方法
5. 子类非静态成员、非静态块
6. 子类构造方法

大概这样的顺序吧。
  相关解决方案