黑马程序员技术交流社区

标题: 继承问题 [打印本页]

作者: s476596497    时间: 2014-1-20 21:38
标题: 继承问题
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);这句话在内存中的初始化流程是什么?请各位大侠指教

作者: 曹冬明    时间: 2014-1-20 22:23
这个问题是不是毕老师视频中的原代码我记不清了,但是毕老师讲过,你找找毕老师关于继承那边的视频,去百度文档中下载个毕老师的随堂笔记,或者看看你自己看毕老师视频的随堂笔记,应该能找到答案的,毕老师都是用图来说明的,我文字功夫不好,所以,怕说错了
作者: xiaochen33520    时间: 2014-1-20 22:43
本帖最后由 xiaochen33520 于 2014-1-20 22:50 编辑

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

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





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2