#记下笔记,便于复习
运行结果分析在注释中,大家可以参考着来看
public class MyXq {
private static MyXq myxq = null;
private SubClass sub = null;
static {
myxq = new MyXq();
System.out.println(3);
}
MyXq() {
sub = new SubClass();
System.out.println(4);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("main");
}
}
class SuperClass {
SuperClass() {
System.out.println("SuperClass构造器");
}
}
class SubClass extends SuperClass {
static {
System.out.println(1);
}
SubClass() {
super();
System.out.println(2);
}
}
/*结果分析:
* 1>首先进入main()方法入口,在执行main()之前,需要对自己的类进行类加载;
* 类加载的时候执行static{}代码块;
* 2>然后需要创建一个MyXq()对象,转到MyXq类的构造器;
* 3>然后需要创建一个SubClass()对象,转到SubClass类,首先需要对类进行加载,加载到内存中
* 所以在加载时执行static代码块————输出1;
* 4>然后进入SubClass类的构造器创建对象,Super()执行父类SuperClass的构造器;
* ————输出“SuperClass构造器”;
* 5>然后在SubClass的构造器中————输出2,sub对象创建完毕;
* 6>然后回到MyXq类的构造器,执行————输出4,myxq对象创建完毕;
* 7>然后回到MyXq类的静态代码块,执行————输出3;
* 8>最后回到main()方法,执行————输出"main";
*/
运行结果是这样的:
1
SuperClass构造器
2
4
3
main
可能有点地方表述不清楚,欢迎指正!