黑马程序员技术交流社区

标题: No constuctor Frotz() in the class [打印本页]

作者: 黑马-罗志强    时间: 2013-1-7 09:37
标题: No constuctor Frotz() in the class
请问我继承了一个class叫做 Frotz,编译器却给我“No constuctor Frotz() in the class”这样的错误提示,为什么呢?求高人解答
作者: 黄锦成    时间: 2013-1-7 11:11
应该你在Frotz类中没定义无参构造函数
作者: 熊永标    时间: 2013-1-7 11:44
  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、当一个类继承父类时,如果父类没有定义构造函数或定义一个无参构造函数时,子类在继承时,可以不用显示调用父类的构造函数,由虚拟机自动调用。
复制代码

作者: 熊永标    时间: 2013-1-7 11:45
supper,写错关键字了




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