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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-罗志强 中级黑马   /  2013-1-7 09:37  /  994 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问我继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢?求高人解答

3 个回复

倒序浏览
应该你在Frotz类中没定义无参构造函数
回复 使用道具 举报
  1. class  Frotz
  2. {
  3.         public Frotz(int i)
  4.         {

  5.         }
  6. }
  7. class childClazz extends Frotz
  8. {

  9. }
  10. //上面的写法将产生No constuctor Frotz() in the class,因为Frotz已经显式创建了有参构造函数.
  11. //而子类在继承父类时,却没有定义显式的调用父类的构造函数,由于虚拟机找不到默认无参的构造函数,
  12. //所以就会在编译时发生报错.
  13. //上面代码应该为:
  14. class  Frotz
  15. {
  16.         public Frotz(int i)
  17.         {

  18.         }
  19. }
  20. class ChildClazz extends Frotz
  21. {
  22.         public ChildClazz()
  23.         {
  24.                 sepper(20);
  25.         }
  26. }
  27. //这样就OK了.
  28. /*总结:
  29. 1、当一个类没有定义构造函数时,虚拟机默认会创建一个无参的构造函数。
  30. 2、当一个类定义了构造函数,那么虚拟机不会再创建构造函数。
  31. 3、子类在继承父类时,如果父类定义了非无参构造函数,那么子类必须显式的调用父类的构造函数,如supper("参数列表"),参数列表与父类已定义的参数列表对应,而且这句语句
  32.         必须在了类构造函数中的第一行定义。
  33. 4、当一个类继承父类时,如果父类没有定义构造函数或定义一个无参构造函数时,子类在继承时,可以不用显示调用父类的构造函数,由虚拟机自动调用。
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
supper,写错关键字了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马