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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码


14 个回复

倒序浏览
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是你父类没有定义空参的构造方法,
所以要么在子类加上super(s);调用父类带参数的构造方法
要么在父类定义一个空参构造方法
回复 使用道具 举报 1 0
子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法的。Super类的构造方法没有无参数的构造方法,所以,你必须继承父类有参数的构造方法,而有参数的构造方法子类必须继承,所以,你必须写super关键字来继承父类的有参数的构造方法。
回复 使用道具 举报
类super的方法没有返回值
回复 使用道具 举报
mishisanyi 发表于 2015-6-9 20:16
子类必须继承父类的构造方法,如果父类构造方法中没有参数传递,那么默认是不写super()继承父类的构造方法 ...

正解,我也是这么理解的
回复 使用道具 举报
父类没有空参构造
回复 使用道具 举报
应该是父类的无参构造没有写
回复 使用道具 举报
父类里没有空参构造方法
回复 使用道具 举报
半月 发表于 2015-6-9 19:43
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是,函数中不是会默认一个空的构造函数么?
回复 使用道具 举报
半月 发表于 2015-6-9 19:43
子类继承父类
在子类的构造函数中第一行会默认的加上一句super()
调用父类的空参构造方法.

但是,父类不是会默认有一个空的构造函数吗
回复 使用道具 举报
幸福与我零距离 发表于 2015-6-9 22:15
但是,父类不是会默认有一个空的构造函数吗

当你自己定义了带参的构造函数后,此时默认的构造函数就木有了,所以会报错~
回复 使用道具 举报
楼上正解
回复 使用道具 举报
我学习构造函数的时候是会这道题的,可是现在有一段时间不用,又忘了~
回复 使用道具 举报
DAN66 发表于 2015-6-9 22:45
当你自己定义了带参的构造函数后,此时默认的构造函数就木有了,所以会报错~ ...

视屏里讲过么?怎么一点印象都没有啊
回复 使用道具 举报
QQheima 发表于 2015-6-9 22:50
我学习构造函数的时候是会这道题的,可是现在有一段时间不用,又忘了~

看来得多复习才行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马