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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小方的sunshine 中级黑马   /  2015-3-28 18:53  /  1030 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
        }
}

15 个回复

倒序浏览
结果是YXYZ
回复 使用道具 举报
赞一个!!!
回复 使用道具 举报
YXYZ应该没错
回复 使用道具 举报
输出结果是YXYZ。
回复 使用道具 举报
YXYZ   先父类 貌似   Y y = new Y(); 要先于构造函数
回复 使用道具 举报
YXYZ没错的
回复 使用道具 举报
YXYZ。new一个匿名Z。Z继承了X,所以先进入X的构造函数,但是new了一个Y的对象,所以进入Y 中,打印一次Y,然后返回X,执行打印X,执行完X的类之后,Z执行Z的类,Z的类中又创建了Y的对象,所以执行Y类,打印Y,最后才执行一次Z,打印Z,结果YXYZ
回复 使用道具 举报
全是正解
回复 使用道具 举报
YXYZ,手动测一下就可以了啊。
回复 使用道具 举报
Grady 中级黑马 2015-3-29 21:16:00
11#
不懂为什么构造方法优先于对象
回复 使用道具 举报
这道题应该主要是考察继承。
我们分析一下函数运行步骤:main函数中有创建匿名Z对象,运行Z函数,而Z函数继承X,那么在Z中会有隐式的super()函数,先加载父类X中的方法,在X的构造函数当中创建Y类对象,就先运行Y函数,因此最终打印输出Y X
运行完父类,子类运行。在Z函数中创建也有创建Y类对象,运行Y函数,最后再运行Z()方法,
因此最终打印结果为:Y X Y  Z
回复 使用道具 举报
主函数是程序的人口,一步一步的分析, YXYZ
回复 使用道具 举报
YXYZ。。。。
回复 使用道具 举报
我自己运行了一遍,结果输出是:YXYZ
回复 使用道具 举报
结果为YXYZ,考点有二:1、继承中的this()与super()  2、理解 A a=new A() 与构造方法的启用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马