请大家看看怎么出结果?

lucima 2007-11-30 09:34:42
1.请写出下列Java代码的输出结果
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(); }
}
输出结果:
...全文
106 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
renwoyou2 2007-12-04
  • 打赏
  • 举报
回复
一楼没错 就那样
lucima 2007-12-04
  • 打赏
  • 举报
回复
是不是,子类继承 是不是方法也要完全继承?

我们的这段代码,子类没有改写父类方法,才会写打印出父类。

要是改写了,就不会执行父类方法了?
zhengwei1981 2007-12-01
  • 打赏
  • 举报
回复
输出结果:
FatherClass Create
FatherClass Create
ChildClass Create
子类的构造函数里有没有super()都没有关系,在new子类的实例时都会先生成一个父类的实例的
leawen 2007-12-01
  • 打赏
  • 举报
回复
正确答案就是 :
FatherClass Create
FatherClass Create
ChildClass Create
lucima 2007-12-01
  • 打赏
  • 举报
回复
习题给的结果是这个
FatherClass Create
FatherClass Create
ChildClass Create

但是我在eclipse里没办法调试编译不通过。
zhouyong80 2007-11-30
  • 打赏
  • 举报
回复
这个一个java类加载顺序的问题。java虚拟机先加载父类再加载子类。创建对象的过程是:按照父子继承关系进行初始化,首先执行父类的初始化块部分,然后是父类的构造方法,再执行子类的初始化块部分,最后是子类的构造方法。再new一个子类对象时,会先初始化父类的构造方法和初始化代码块。这样才能在子类中使用继承自父类的属性和方法。
zazxzx 2007-11-30
  • 打赏
  • 举报
回复
输出结果:
FatherClass Create
FatherClass Create
ChildClass Create

这是一个继承问题

为什么会这样?请看<JAVA编程思想>里面的解释:

用于基础类的构建器肯定在一个衍生类的构建器中调用,而且逐渐向上链接,使每个基础类使用的构建器都能得到调用。之所以要这样做,是由于构建器负有一项特殊任务:检查对象是否得到了正确的构建。一个衍生类只能访问它自己的成员,不能访问基础类的成员(这些成员通常都具有private属性)。只有基础类的构建器在初始化自己的元素时才知道正确的方法以及拥有适当的权限。所以,必须令所有构建器都得到调用,否则整个对象的构建就可能不正确。那正是编译器为什么要强迫对衍生类的每个部分进行构建器调用的原因。在衍生类的构建器主体中,若我们没有明确指定对一个基础类构建器的调用,它就会“默默”地调用默认构建器。如果不存在默认构建器,编译器就会报告一个错误(若某个类没有构建器,编译器会自动组织一个默认构建器)。
langzi606 2007-11-30
  • 打赏
  • 举报
回复
public class FatherClass()
这句不知道是你故意写错的还是怎么,修改后 结果是:
FatherClass Create
FatherClass Create
ChildClass Create
AndyJee 2007-11-30
  • 打赏
  • 举报
回复
1楼,是说的哪种情况应该是:

package test;      
import test.FatherClass;
public class ChildClass extends FatherClass{
public ChildClass(){
super();//父类构造继承
System.out.println("ChildClass Create");
}
public static void main(String[] args){
FatherClass fc=new FatherClass();
ChildClass cc=new ChildClass()
}
}
AndyJee 2007-11-30
  • 打赏
  • 举报
回复
FatherClass Create
ChildClass Create

难道有什么陷阱。。。?没有吧。。。
Ailen5 2007-11-30
  • 打赏
  • 举报
回复
这是一个继承的问题
输出结果应该为:
FatherClass Create
FatherClass Create
ChildClass Create

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧