黑马程序员技术交流社区

标题: JAVA继承问题? [打印本页]

作者: 曹思敏    时间: 2013-6-4 09:10
标题: JAVA继承问题?
本帖最后由 曹思敏 于 2013-6-6 11:13 编辑

继承了一个class叫做 Fritz,编译器却给我“No constuctor Fritz() in the class”这样的错误提示,为什么呢?

作者: 孙茜茜    时间: 2013-6-4 09:25
不贴代码怎么看
作者: 花心々小土豆    时间: 2013-6-4 09:42
在Fritz类中找不到不带参数的构造函数。
估计楼主在Fritz类中写入了代参的构造函数,所以jvm不会给这个类加默认的无参的构造函数,而在子类构造函数中的第一行又没有手动指定要调用Fritz类中的哪类构造函数
作者: 闫月乐    时间: 2013-6-4 11:36
是不是你父类中没有空参数的构造函数,而是全部都是有参数的构造函数?
子类对象一建立就会运行与之相对应的构造函数,而子类继承父类,会优先运行父类中空参数的构造函数,如果如果父类中手动定义了构造函数,系统会将默认的空参数构造函数取消,而此时,子类中需要
用super(参数),去手动调用父类中的构造函数,否则会出现你所说的那种问题!!

作者: 王瀛    时间: 2013-6-4 12:01
本帖最后由 王瀛 于 2013-6-4 12:02 编辑

找不到Fritz中的构造函数

可能你调用Fritz的对象时,传了初始化值,而父类(Fritz)中没有定义相对应的构造函数导致的
简单说就是  构造Fritz对象的方式在父类Fritz中没有给出定义。

作者: 胡晓思    时间: 2013-6-4 12:10
在父类复写无参构造方法就行
作者: 郑锐    时间: 2013-6-4 14:29
按照这个错误提示来看,就是没有找到父类的构造器。
你是不是在父类里面重载了构造函数。
在子类的构造函数里面第一句要用super调用你自己写的父类构造函数。
作者: 孔雀东南飞    时间: 2013-6-4 21:54
No constuctor Fritz() in the class
楼主:
1、这句英文意思:在类中没有找到空参数的构造函数Fritz()。
2、很明显,你在父类中重载了构造函数且构造函数带参数,那么这样你就需要在子类构造函数第一行加上super(参数),表示手动调用父类带参数的构造函数。
3、父类在加载的时候,会自动调用无参的构造函数。若要加载子类,那么必先加载父类,因为子类是要继承父类的,所以先加载父类,而父类在加载时必然调用父类构造函数。而在子类构造函数第一行super(参数),意思就是调用父类带参数的构造函数。




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