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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 乔叶旭 于 2012-11-28 10:13 编辑

请问在使用new关键字创建对象时,为什么有时候提示找不到无参的构造方法啊?比较郁闷

4 个回复

倒序浏览
如果你所创建对象的那个类没有无参构造函数的话,那么你是不能用无参的创建对象的
回复 使用道具 举报
如果那个类是你自己定义的,你在类中写了有参的构造函数,那么就只有这个有参构造了,这时候编译器不会给你自动生成一个默认的无参构造。所以你new对象时必须用有参的
回复 使用道具 举报
构造函数在new创建对象时调用。
也就是说,当new对象的时候会调用与之对应的构造函数,new一个有参的就调用有参数的构造函数,new一个无参的就调用无参数的构造函数。
之所以会出现题中的情况,是因为你new的是无参的对象,而类中却没有对应的无参构造函数,所以提示找不到。

每一个类都有构造函数,即使我们没有显式定义构造函数,也会生成一个默认无参的构造函数,其中没有任何内容。

注意:这个自动生成的构造函数只在未定义任何构造函数时生成,如果我们定义了一个有参的构造函数,那么就不会生成无参的了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
1、假如没有定义构造方法会自动生成一个无参构造,无参的默认不写,但是如果你写了其他的
public Person(String name),如果你想直接new Person(),就必须要写,你可以理解为public Person(String name)‘覆盖‘掉了无参。
2、如果你继承了一个类,构造方法就必须先引用父类的构造方法,而你的父类没有写出无参数构造方法,所以编译器找不到无参方法,就报了错.你必须在你的子类构造方法最上面加一句super(//放一个int值),才可以通过编译.

希望可以帮到你

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马