您的位置:首页 > 编程语言 > Java开发

Java继承与初始化

2016-01-14 16:37 489 查看

code

public class TestClassInitial {
public static void main(String[] args){
Beetle b=new Beetle();
}
}

class Insect{
private int i=9;
protected int j;
Insect(){
System.out.println("i="+i+", j="+j);
j=39;
}
{
System.out.println("  insect");

}
private static int x1=printStatic("static Insect.x1 init");
static{
System.out.println(" static insect");
}
public static int printStatic(String string) {
// TODO Auto-generated method stub
System.out.println(string);
return 1;
}
}
class Beetle extends Insect{
private String k="k";
static{
System.out.println("static Beetle");
}
{
System.out.println("Beetle");
}
public Beetle(){
System.out.println("construct Beetle");
}
private static int x2=Insect.printStatic("beetle x2");
}


总结流程:

加载main所在方法类

如果该类有基类,则加载基类,持续下去

反过来一个个加载static修饰的成员变量或者代码块 顺序从上到下

从基类开始,一次次加载非静态成员,一个类中从上到下,然后到初始化构造函数

子类加载非静态成员,然后构造函数

动态代码快在构造函数之前发生

运行结果

static Insect.x1 init
static insect
static Beetle
beetle x2
insect
i=9, j=0
Beetle
construct Beetle
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: