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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 北极雪871208 中级黑马   /  2014-3-30 09:16  /  1158 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类:
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

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
optimisticpig 来自手机 中级黑马 2014-3-30 09:34:10
沙发
因为实例化子类对象时,系统会自动调用父类的无参构造函数,所以会多打印一次
回复 使用道具 举报
FatherClass fc = new FatherClass(); 在这会打印一次,


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

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报 1 0
子类对象在实例化时会默认调用父类的无参构造方法,之后再调用自己对应的构造方法,子类无参构造方法中第一句默认隐含了super()所以会打印两次,一次是创建父类时,一次是创建子类时
回复 使用道具 举报
FatherClass fc = new FatherClass(); 这个不用说了吧!输出一遍 FatherClassCreate
ChildClass cc = new ChildClass(); 子类默认继承父类的无参构造函数,所以实现了父类的FatherClass方法,输出一遍 FatherClassCreate   ,   子类的无参构造函数,自己的方法肯定执行了。ChildClass Create 。所以输出了两次FatherClass Create

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
子类继承父类后,如果创建子类对象则必然会调用父类的构造函数,即使自己不加系统也会自己生成一个无参数的父类构造函数,在父类构造函数执行后才会执行子类的构造函数,所以打印两次
回复 使用道具 举报
你好! 你 实例化的时候首先会执行你父类构造函数要是有的话 其次是你实例化对象指向的那个构造函数 我是这么理解不知道啊能帮到你
回复 使用道具 举报
调用子类的构造方法时,默认会执行下面这段代码:
public ChildClass() {
                super();    //这个是默认的,一般省略不显示,但是一定会被执行,除非被显式声明。所以打印了父类的构造方法
                System.out.println("ChildClass Create");
        }

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
楼主你好,如果问题已解决,请将帖子改为提问结束,如果没有解决请楼主继续提问,谢谢合作
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马