黑马程序员技术交流社区

标题: 关于一个继承问题? [打印本页]

作者: 北极雪871208    时间: 2014-3-30 09:16
标题: 关于一个继承问题?
父类:
package test;
public class FatherClass {
public FatherClass() {
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass {
public ChildClass() {
System.out.println("ChildClass Create");
}
public static void main(String[] args) {
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create 这里怎么打印两次父类的呢?!!
ChildClass Create
作者: optimisticpig    时间: 2014-3-30 09:34
因为实例化子类对象时,系统会自动调用父类的无参构造函数,所以会多打印一次
作者: 执笔梦    时间: 2014-3-30 09:42
FatherClass fc = new FatherClass(); 在这会打印一次,


ChildClass cc = new ChildClass();
public ChildClass() {
super();//在创建子类对象的时候,会自动调用父类的无参构造函数.
System.out.println("ChildClass Create");
}

作者: H-Deka    时间: 2014-3-30 09:52
子类对象在实例化时会默认调用父类的无参构造方法,之后再调用自己对应的构造方法,子类无参构造方法中第一句默认隐含了super()所以会打印两次,一次是创建父类时,一次是创建子类时
作者: 董振冬    时间: 2014-3-30 09:57
FatherClass fc = new FatherClass(); 这个不用说了吧!输出一遍 FatherClassCreate
ChildClass cc = new ChildClass(); 子类默认继承父类的无参构造函数,所以实现了父类的FatherClass方法,输出一遍 FatherClassCreate   ,   子类的无参构造函数,自己的方法肯定执行了。ChildClass Create 。所以输出了两次FatherClass Create


作者: 杨殿生    时间: 2014-3-30 20:32
子类继承父类后,如果创建子类对象则必然会调用父类的构造函数,即使自己不加系统也会自己生成一个无参数的父类构造函数,在父类构造函数执行后才会执行子类的构造函数,所以打印两次
作者: lazy_xia    时间: 2014-3-31 14:30
你好! 你 实例化的时候首先会执行你父类构造函数要是有的话 其次是你实例化对象指向的那个构造函数 我是这么理解不知道啊能帮到你
作者: 孔丽阁    时间: 2014-3-31 15:05
调用子类的构造方法时,默认会执行下面这段代码:
public ChildClass() {
                super();    //这个是默认的,一般省略不显示,但是一定会被执行,除非被显式声明。所以打印了父类的构造方法
                System.out.println("ChildClass Create");
        }
作者: 枫儿    时间: 2014-4-6 19:44
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作




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