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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FlyMeToTheMoon 中级黑马   /  2014-11-2 19:22  /  856 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子类为什么一定要引用父类的构造函数 有点搞不清

3 个回复

倒序浏览
说实话这里我也不是很清楚,因此我用代码试验了一下。
在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()


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

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
  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. }
复制代码

上面代码复制少了。
回复 使用道具 举报
这是JVM规定的,如果不调用,那么当父类有些字段是需要由构造函数接收实参传入的,而子类不调用的话,试问次字段子类如何初始化次字段?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马