Chess y = new Chess("The end.")
1、调用父类的构造方法
BoardGame();
System.out.println("Haha,let's begin:"); //Haha,let's begin:
pp(); //子类重写了父类的方法,调用 System.out.println("pp 2"+"m = "+m); ,此时子类的m还没有初始化 //pp 2m = 0
System.out.println("m = "+m); // 父类的m,初始化了,// m = 100
2、调用子类的构造方法
System.out.println(ss); // The End.
1、调用父类的构造方法
BoardGame();
System.out.println("Haha,let's begin:"); //Haha,let's begin:
pp(); //子类重写了父类的方法,调用 System.out.println("pp 2"+"m = "+m); ,此时子类的m还没有初始化 //pp 2m = 0
System.out.println("m = "+m); // 父类的m,初始化了,// m = 100
2、调用子类的构造方法
System.out.println(ss); // The End.
那么它们也会按照顺序执行初始化工作。在所有类成员初始化完成后,才调用对象所在类的构造方
法创建对象。构造方法作用就是初始化。
静态对象(变量)在非静态对象前初始化。静态对象(变量)只初始化一次,再次调用就不初
始化了,但非静态对象在每次调用时都要初始化。
程序中的主类的静态变量会在main()方法执行前进行初始化工作。
不仅第1 次创建对象时,类中所有的静态变量要初始化,第1 次访问类中的静态变量(没有创
建对象)时,该类中所有的静态变量也要按照它们在类中排列的顺序初始化。
初始化的顺序包括构造方法调用的顺序如下:
1. 主类的静态成员首先初始化。
2. 主类的超类的构造方法按照从最高到最低的顺序被调用。
3. 主类的非静态对象(变量)初始化。
4. 调用主类的构造方法。
在一个构造方法中只能调用一次其它的构造方法,并且调用构造方法的语句必须是第一条语句。
Chess y = new Chess("The End.");
就好像变成了:
Chess y = new BoardGame();
y = new Chess("The End.");不解!明明用了Chess的带参构造为什么变成了先调用BoardGame无参构造然后再调用Chess的带参构造,难道要这样理解:在Chess y的时候就开始构造,然后将new Chess("The End.")赋值给y.请weimenren(愚人码头)解困,谢谢