我的代码是:
public class Q2Client {
public static void main(String[] args) {
Q2 newq2 = new Q2(5);
}
}
class Q2 {
int x;
public void Q2 (int y) {
int x = y;
}
}
创建newq2时,我收到有关不接受整数(必填:无参数)的错误,但Q2显然采用了整数。当我删除Q2类中的空白时,它不会给我错误并且可以正常运行。无效会导致参数(int y)无效吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Java中,构造函数的定义需要与类名完全一致,并且不包含返回类型。您在Q2
类中定义了一个看起来像构造函数的方法,但实际上它是一个普通的方法,因为方法名前没有访问修饰符(如public)并且与类名不符——方法名为Q2
而类名为Q2
,这在Java中是不允许作为构造函数的正确声明的。
正确的构造函数声明方式应该是这样的:
class Q2 {
int x;
// 这是正确的构造函数声明
public Q2(int y) {
this.x = y; // 使用this关键字来引用实例变量x,避免局部变量x覆盖实例变量
}
}
在您的原始代码中,由于没有正确的构造函数,Java会自动提供一个无参数的默认构造函数。当您尝试使用带有整数参数的构造函数创建对象时,编译器找不到匹配的构造函数,从而导致错误。
删除“空白”可能指的是您意外地修正了问题,比如不小心删除了错误的构造函数声明,使得默认构造函数成为唯一的选择,因此程序能够编译通过,但这并不是解决问题的正确方式。
按照上述修改后的代码,您的Q2Client
类应该能够正常创建Q2
对象并传入整数参数。