黑马程序员技术交流社区

标题: 继承的问题 [打印本页]

作者: FlyMeToTheMoon    时间: 2014-11-2 19:22
标题: 继承的问题
子类为什么一定要引用父类的构造函数 有点搞不清
作者: 姜浩    时间: 2014-11-2 20:18
说实话这里我也不是很清楚,因此我用代码试验了一下。
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来。
  1. // 父类
  2. class Father
  3. {
  4.         // public TTT(int i)
  5.         // {
  6.         // System.out.println(11111);
  7.         // }
  8. }

  9. // 子类
  10. class Son extends Father
  11. {

  12.         public Son(int i)
  13.         {
复制代码
当类中没有写构造方法时,会系统会自动添加一个隐式的无参构造。

当你没有使用父类默认的构造方法时,此时在子类的构造方法中就需要显示的调用父类定义的构造方法。
这时你就要显示的调用父类的构造方法,因为子类默认调用的是父类的无参构造方Father()


如果你的父类中显示的写了一个无参的构造方法,这时子类中就不需要显示的调用父类中的构造方法,
因为子类中有一个无参的构造方法(可能是你显示写的,也可能是隐式的),子类的构造方法它会自动的去调用父类中的无参构造方法。

作者: 姜浩    时间: 2014-11-2 20:20
  1. // 父类
  2. class Father
  3. {
  4.         // public TTT(int i)
  5.         // {
  6.         // System.out.println(11111);
  7.         // }
  8. }

  9. // 子类
  10. class Son extends Father
  11. {

  12.         public Son(int i)
  13.         {
  14.                 System.out.println(2222);

  15.         }
  16. }

  17. public class Test
  18. {
  19.         public static void main(String[] args)
  20.         {
  21.                 Son d = new Son(1);
  22.         }
  23. }
复制代码

上面代码复制少了。
作者: OnlyStyle    时间: 2014-11-2 20:33
这是JVM规定的,如果不调用,那么当父类有些字段是需要由构造函数接收实参传入的,而子类不调用的话,试问次字段子类如何初始化次字段?




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