#簡単に確認できるようにメモを取ります
実行結果の分析はメモにあり、参照できます
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
スーパークラスコンストラクタ
2
4
3
主
不明瞭な表現があるかもしれませんが、訂正してください!