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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹思敏 中级黑马   /  2013-6-4 09:10  /  1842 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曹思敏 于 2013-6-6 11:13 编辑

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

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

7 个回复

倒序浏览
不贴代码怎么看
回复 使用道具 举报
在Fritz类中找不到不带参数的构造函数。
估计楼主在Fritz类中写入了代参的构造函数,所以jvm不会给这个类加默认的无参的构造函数,而在子类构造函数中的第一行又没有手动指定要调用Fritz类中的哪类构造函数

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
是不是你父类中没有空参数的构造函数,而是全部都是有参数的构造函数?
子类对象一建立就会运行与之相对应的构造函数,而子类继承父类,会优先运行父类中空参数的构造函数,如果如果父类中手动定义了构造函数,系统会将默认的空参数构造函数取消,而此时,子类中需要
用super(参数),去手动调用父类中的构造函数,否则会出现你所说的那种问题!!

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王瀛 于 2013-6-4 12:02 编辑

找不到Fritz中的构造函数

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

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
在父类复写无参构造方法就行
回复 使用道具 举报
按照这个错误提示来看,就是没有找到父类的构造器。
你是不是在父类里面重载了构造函数。
在子类的构造函数里面第一句要用super调用你自己写的父类构造函数。

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
No constuctor Fritz() in the class
楼主:
1、这句英文意思:在类中没有找到空参数的构造函数Fritz()。
2、很明显,你在父类中重载了构造函数且构造函数带参数,那么这样你就需要在子类构造函数第一行加上super(参数),表示手动调用父类带参数的构造函数。
3、父类在加载的时候,会自动调用无参的构造函数。若要加载子类,那么必先加载父类,因为子类是要继承父类的,所以先加载父类,而父类在加载时必然调用父类构造函数。而在子类构造函数第一行super(参数),意思就是调用父类带参数的构造函数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马