本帖最后由 a12366456 于 2015-7-20 00:09 编辑
- class X {
- Y b = new Y();
- X() {
- System.out.print("X");
- }
- }
- class Y {
- Y() {
- System.out.print("Y");
- }
- }
- public class Z extends X {
- Y y = new Y();
- Z() {
- System.out.print("Z");
- }
- public static void main(String[] args) {
- new Z();
- }
- }
复制代码 执行后结果为:YXYZ ,和我最开始想的结果不一样,我想象的实例化只执行了构造函数不包含上面的语句,明显错了。最后分析可能是Z继承了X,实例化Z的对象时,先隐式实例化父类X的对象,所以先执行了X类中Y的实例化语句打印Y,再执行X的构造函数X()打印X,接着回来实例化Z的对象,先执行Y的实例化语句Y y = new Y();打印Y,再执行Z的构造函数Z()打印Z。不知道对不对??
|
|