黑马程序员技术交流社区

标题: 继承时子类成员变量初始化 [打印本页]

作者: 陈cc    时间: 2015-8-17 23:18
标题: 继承时子类成员变量初始化
class Fu{
        Fu(){
                //super();
                //调用的是子类的show方法,此时其成员变量num还未进行显示初始化
                show();
                return;
        }
        void show(){
                System.out.println("fu show");
        }
}
class Zi extends Fu{
        int num = 8;
        Zi(){
                //super();
                //通过super初始化父类内容时,子类的成员变量并未显示初始化,每super()父类初始化完毕后,才进行子类的成员变量显示初始化
                return;
        }
        void show(){
                System.out.println("zi show" + num);
        }
}
class ExtendsDemo2
{
        public static void main(String[] args){
                Zi z = new Zi();
                z.show();
                //Fu f = new Zi();
        }
}

请问当初始化父类时,子类并未初始化,那么int num,应该不存在的吧,怎么会输出zi show0呢?


作者: zmhlnrs    时间: 2015-8-18 17:11
初始化ExtendsDemo2这个类的时候自动加载子类
作者: sunsteam    时间: 2015-8-18 21:37
变量优先于构造代码块和构造函数出现     静态代码块>静态变量>成员变量>构造代码块>构造函数    父类初始化完一部分会先处理子类的对应部分 再初始化父类下一个类型
作者: 蓬头小道士    时间: 2015-8-18 22:07
不应该这样说,既然没有初始化子类,父类是完全没作用的。
作者: 龙哥Longer    时间: 2015-8-18 23:29
学习了,谢谢分享




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