当前位置: 代码迷 >> J2SE >> 关于JAVA编程思维里面的一段代码
  详细解决方案

关于JAVA编程思维里面的一段代码

热度:8   发布时间:2016-04-23 22:11:39.0
关于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
我完全无法理解。。。求解高手来解答一下
Java 编程

------解决方案--------------------
lz看看静态方法以及各方法的先后顺序,静态方法块在运行时就执行了,不用放在main中
  相关解决方案