关于JAVA编程思想里面的一段代码
是关于第6章继承的问题?
class Insect{
int i = 9;
int j;
Insect() {
// TODO Auto-generated constructor stub
prt("i="+i+".j="+j);
}
static int x1 = prt("static Insect.x1 initialized");
static int prt(String s){
System.out.println(s);
return 47;
}
}
public class Test02 extends Insect {
int k = prt("Beetle.k initialized");
Test02() {
// TODO Auto-generated constructor stub
prt("k="+k);
prt("j="+j);
}
static int x2 = prt("static Beetle.x2 initialized");
static int prt(String s){
System.out.println(s);
return 47;
}
public static void main(String[] args) {
prt("Bookle constructor");
Test02 t = new Test02();
}
}
按照我的理解来说先执行main方法里面的打印出Bookle constructor,然后在执行子类里面继承的父类方法,但它是先从父类的
static int prt(String s){
System.out.println(s);
return 47;
}
先执行,而且我也没有入参s,它就已经获取到static int x2 = prt("static Beetle.x2 initialized");这是为什么?
它出出来的结果是
static Insect.x1 initialized
static Beetle.x2 initialized
Bookle constructor
i=9.j=0
Beetle.k initialized
k=47
j=0
我完全无法理解。。。求解高手来解答一下
------解决方案--------------------lz看看静态方法以及各方法的先后顺序,静态方法块在运行时就执行了,不用放在main中