A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王贵朝 中级黑马   /  2012-9-25 18:55  /  1786 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class X {         //main中z对父类x的构造方法调用,运行的是 Y b = new y();还是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();

    }

}


评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

5 个回复

正序浏览
以前我学习的时候只知道子类的构造方法中第一句要先写父类的构造方法,没想到连成员变量都加载了。总之又学到东西了。
回复 使用道具 举报
学习了...
回复 使用道具 举报
本帖最后由 王得新 于 2012-9-25 20:24 编辑

在这里先说点小知识,main()方法在一个类中(本例是在Z类中),但不代表main()方法就是属于这个类。(楼主可以把main()函数很果断的剪切到同一个包下的X或Y中试下)

看重点:
class X {         //main中z对父类x的构造方法调用,运行的是 Y b = new y();还是X()??

    Y b = new Y();         //2.   这里是重点,应该听说过这样一句话,先静态后动态,先成员后构造,所以这里,先是 Y b = new Y(),再是X()构造函数

    X() {                //4.   然后这才是第2步中X()构造函数。所以输出----------------------------------->X

            System.out.print("X");

    }

}

class Y {

    Y() {//3.由于第2步的原因,所以这里第3步输出------------------------------------->Y
            //6.由于第5步Y b = new Y()的原因,所以这里输出-------------------------------->Y

            System.out.print("Y");

    }

}


public class Z extends X {

    Y y = new Y();            //5.    第4步完了之后,就到Z类中了,这里还是先成员后构造,所以先是Y b = new Y(),再是Z();

    Z() {            //7.    最后一步是new Z(),所以最后输出------------------------------>Z

            System.out.print("Z");

    }


    public static void main(String[] args) {        //main函数是入口不用说的

           new Z();       //1.   调用Z类在构造函数,但是Z是继承X的,所以先到X类中

    }

}



所以结果是   Y  X  Y  Z
回复 使用道具 举报
输出的是: Y X Y Z

当在Z的主类中运行主函数的时候,执行到new Z();  的时候会到X类中进行初始化
当进入到X类中的时候,读取到   Y b = new Y();   创建Y 的对象,又进入到Y类的构造函数中进行初始化,
会打印出 Y;

下来就会继续初始化 X 类,进入构造函数,打印的是 X;
下来再到自己的类(Z)中初始化,  得到的结果是 Y 、Z;

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
实在看不懂哥们的问题!你是问你的程序的结果还是问什么啊 !写程序最好不要这样XYZ的(个人觉得)!希望哥们再说明下题意啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马