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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© s476596497 中级黑马   /  2014-1-20 21:38  /  1102 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Fu
{
        int num ;
        Fu()
        {
                num =10;
                System.out.println("A fu run");
        }
        Fu(int x)
        {
                System.out.println("B fu run..."+x);
        }
}
class Zi extends Fu
{
        int num;
        Zi()
        {
                //super();//调用的就是父类中的空参数的构造函数。
               
                System.out.println("C zi run"+num);
        }
        Zi(int x)
        {
                this();
                //super();
//                super(x);
                System.out.println("D zi run "+x);
        }
}

class  ExtendsDemo4
{
        public static void main(String[] args)
        {
                new Zi(6);
        }
}
class Demo//extends Object
{
        /*
        
        Demo()
        {
                super();
                return;
        }
        */
}



new Zi(6);这句话在内存中的初始化流程是什么?请各位大侠指教

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

2 个回复

正序浏览
本帖最后由 xiaochen33520 于 2014-1-20 22:50 编辑

首先调用子类有参构造函数,
有参构造函数第一行是this(),然后调用子类空参构造函数,子类空参构造函数第一行隐式super();所以再调用父类无参构造函数,执行完后回到子类无参构造函数执行完毕后,跳转到子类有参构造函数执行完子类有参构造函数后就OK了。

所以执行结果是
A fu run
C zi run0
D zi run6

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
这个问题是不是毕老师视频中的原代码我记不清了,但是毕老师讲过,你找找毕老师关于继承那边的视频,去百度文档中下载个毕老师的随堂笔记,或者看看你自己看毕老师视频的随堂笔记,应该能找到答案的,毕老师都是用图来说明的,我文字功夫不好,所以,怕说错了

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马