黑马程序员技术交流社区

标题: 这道题为什么会编译失败啊,求详细讲解 [打印本页]

作者: 幸福与我零距离    时间: 2015-6-9 19:30
标题: 这道题为什么会编译失败啊,求详细讲解
  1. class Super
  2. {
  3.         int i=0;
  4.         public Super(String s)
  5.         {
  6.                 i=1;
  7.         }
  8. }
  9. class Demo extends Super{
  10.         public Demo(String s){
  11.                 i=2;
  12.         }
  13.         public static void main(String[] args){
  14.                 Demo d= new Demo("yes");
  15.                 System.out.println(d.i);
  16.         }
  17. }
复制代码



作者: 半月    时间: 2015-6-9 19:43
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是你父类没有定义空参的构造方法,
所以要么在子类加上super(s);调用父类带参数的构造方法
要么在父类定义一个空参构造方法
作者: mishisanyi    时间: 2015-6-9 20:16
子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法的。Super类的构造方法没有无参数的构造方法,所以,你必须继承父类有参数的构造方法,而有参数的构造方法子类必须继承,所以,你必须写super关键字来继承父类的有参数的构造方法。
作者: coosea128    时间: 2015-6-9 21:09
类super的方法没有返回值
作者: 路途遥远    时间: 2015-6-9 21:12
mishisanyi 发表于 2015-6-9 20:16
子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法 ...

正解,我也是这么理解的
作者: SouthKai    时间: 2015-6-9 21:19
父类没有空参构造
作者: TOBESKY    时间: 2015-6-9 21:33
应该是父类的无参构造没有写
作者: 一休    时间: 2015-6-9 21:44
父类里没有空参构造方法
作者: 幸福与我零距离    时间: 2015-6-9 22:14
半月 发表于 2015-6-9 19:43
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是,函数中不是会默认一个空的构造函数么?
作者: 幸福与我零距离    时间: 2015-6-9 22:15
半月 发表于 2015-6-9 19:43
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是,父类不是会默认有一个空的构造函数吗
作者: DAN66    时间: 2015-6-9 22:45
幸福与我零距离 发表于 2015-6-9 22:15
但是,父类不是会默认有一个空的构造函数吗

当你自己定义了带参的构造函数后,此时默认的构造函数就木有了,所以会报错~
作者: shuaiqi_P_D    时间: 2015-6-9 22:50
楼上正解
作者: QQheima    时间: 2015-6-9 22:50
我学习构造函数的时候是会这道题的,可是现在有一段时间不用,又忘了~
作者: 幸福与我零距离    时间: 2015-6-10 07:25
DAN66 发表于 2015-6-9 22:45
当你自己定义了带参的构造函数后,此时默认的构造函数就木有了,所以会报错~ ...

视屏里讲过么?怎么一点印象都没有啊
作者: 幸福与我零距离    时间: 2015-6-10 07:26
QQheima 发表于 2015-6-9 22:50
我学习构造函数的时候是会这道题的,可是现在有一段时间不用,又忘了~

看来得多复习才行




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