黑马程序员技术交流社区

标题: 一到简单题的输出结果 [打印本页]

作者: wangleixhlm    时间: 2014-5-25 23:32
标题: 一到简单题的输出结果
本帖最后由 wangleixhlm 于 2014-5-26 22:02 编辑
  1. class FatherClass
  2. {
  3.         public FatherClass()
  4.         {
  5.                 System.out.println("FatherClass Create");
  6.         }
  7. }

  8. public class ChildClass extends FatherClass
  9. {
  10.         public ChildClass()
  11.         {
  12.                 System.out.println("ChildClass Create");
  13.         }
  14.         public static void main(String[] args)
  15.         {
  16.                 FatherClass fc = new FatherClass();
  17.                 ChildClass cc = new ChildClass();
  18.         }
  19. }
复制代码



为什么会输出这个结果?两次FatherClass Create:
E:\My Document\test>java ChildClass
FatherClass Create
FatherClass Create
ChildClass Create

不科学啊。。
作者: 曹冬明    时间: 2014-5-25 23:39
就是太科学了,所以结果才是这样,比如动物是父类,狗是子类,你new了一个狗,能说没有多一个动物么!这是生活中的例子,所以子类的构造方法的第一行,有一句隐式的super(),所以结果就是你这个样子了
作者: 寻找人生目标    时间: 2014-5-25 23:40
本帖最后由 寻找人生目标 于 2014-5-25 23:44 编辑
  1. class FatherClass
  2. {
  3.         public FatherClass()
  4.         {
  5.                 System.out.println("FatherClass Create");
  6.         }
  7. }

  8. public class ChildClass extends FatherClass
  9. {
  10.         public ChildClass()
  11.         {
  12.                                 //super();    //隐士的super(); 指向父类的构造函数
  13.                 System.out.println("ChildClass Create");
  14.         }
  15.         public static void main(String[] args)
  16.         {
  17.                 FatherClass fc = new FatherClass(); //第一步父类的构造函数执行(父类还继承了Object但是它什么也没就没输出东西)输出一次
  18.                 ChildClass cc = new ChildClass(); //第二步子类的构造函数执行 其第一行有个隐士的super();执行父类的构造函数再输出一次
  19.         }
  20. }
复制代码


作者: wangleixhlm    时间: 2014-5-25 23:42
曹冬明 发表于 2014-5-25 23:39
就是太科学了,所以结果才是这样,比如动物是父类,狗是子类,你new了一个狗,能说没有多一个动物么!这是 ...

额,看来还真是挺科学的:handshake懂了
作者: \(^o^)/    时间: 2014-5-26 01:20
  1. class FatherClass
  2. {
  3. public FatherClass()
  4. {
  5. System.out.println("FatherClass Create");
  6. }
  7. }

  8. public class ChildClass extends FatherClass
  9. {
  10. public ChildClass()
  11. {
  12. System.out.println("ChildClass Create");
  13. }
  14. public static void main(String[] args)
  15. {
  16. FatherClass fc = new FatherClass(); //输入FatherClass Create是毫无疑问的。
  17. ChildClass cc = new ChildClass(); //当创建对象输入FatherClass Create,然后输入ChildClass Create。
  18. }
  19. }
复制代码
当子类继承了父类的时候如果父类的方法子类没有去覆盖时,子类在创建对象的时候会自动的将父类中没有覆盖的方法继承过来。所以父类创建对象时输出的还是父类方法,而子类创建对象时不仅仅输出子类中的方法而且还要输出继承父类中的方法。

作者: 247033993@qq.co    时间: 2014-5-26 09:26
是这样的,子类实例化,会调用父类的构造方法的




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