开发者社区 问答 正文

为什么void方法不能在参数中接受整数?

我的代码是:

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)无效吗?

展开
收起
垚tutu 2019-12-12 09:18:19 603 分享 版权
阿里云 AI 助理回答

在Java中,构造函数的定义需要与类名完全一致,并且不包含返回类型。您在Q2类中定义了一个看起来像构造函数的方法,但实际上它是一个普通的方法,因为方法名前没有访问修饰符(如public)并且与类名不符——方法名为Q2而类名为Q2,这在Java中是不允许作为构造函数的正确声明的。

正确的构造函数声明方式应该是这样的:

class Q2 {
   int x;

   // 这是正确的构造函数声明
   public Q2(int y) {
       this.x = y; // 使用this关键字来引用实例变量x,避免局部变量x覆盖实例变量
   }
}

在您的原始代码中,由于没有正确的构造函数,Java会自动提供一个无参数的默认构造函数。当您尝试使用带有整数参数的构造函数创建对象时,编译器找不到匹配的构造函数,从而导致错误。

删除“空白”可能指的是您意外地修正了问题,比如不小心删除了错误的构造函数声明,使得默认构造函数成为唯一的选择,因此程序能够编译通过,但这并不是解决问题的正确方式。

按照上述修改后的代码,您的Q2Client类应该能够正常创建Q2对象并传入整数参数。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: