Java 为什么void方法不接受参数中的整数?
我的代码是:Java 为什么void方法不接受参数中的整数?,java,class,object,methods,parameters,Java,Class,Object,Methods,Parameters,我的代码是: public class Q2Client { public static void main(String[] args) { Q2 newq2 = new Q2(5); } } 我在创建newq2时遇到了一个错误,即不接受整数(必需:无参数),但Q2显然接受整数。当我删除Q2类中的void时,它不会给出错误并且运行良好。void会导致参数(int y)无效吗?构造函数没有返回类型! 按如下方式更改您的Q2课程 class Q2 { int x;
public class Q2Client {
public static void main(String[] args) {
Q2 newq2 = new Q2(5);
}
}
我在创建newq2时遇到了一个错误,即不接受整数(必需:无参数),但Q2显然接受整数。当我删除Q2类中的void时,它不会给出错误并且运行良好。void会导致参数(int y)无效吗?构造函数没有返回类型! 按如下方式更改您的Q2课程
class Q2 {
int x;
public Q2 (int y) {
this.x = y;
}
}
这样编码:
class Q2 {
int x;
public Q2 (int y) { // attention:remove the void
int x = y;
}
}
意味着Q2的方法是类Q2的构造函数,它接受类型为integer的参数。
但是,如果您这样定义方法:
public void Q2 (int y) { // attention:NOT remove the void
int x = y;
}
意思是你告诉机器要定义一个公共方法,注意:这个类没有构造函数!参考JAVA参考,将调用没有参数的默认构造函数,然后调用新的Q2(5)将是错误的。您试图使用方法作为构造函数。从
Q2
的签名中删除单词void
。另外,您正在创建一个局部变量x
,该变量隐藏类变量x
只需在public void Q2(int y)
中跳过void,您已经将该方法定义为一个构造函数,可由new Q2(5)
调用。现在Q2只有一个默认的构造函数,没有参数,因此问题就来了。在java中,如果你创建了一个与类同名的方法,那么它就是一个“构造函数”,而不是一个常规方法。它创建Q2类的一个新实例,并自动返回它(因此您无法选择返回类型)。您仍然错误地隐藏了x
字段
public void Q2 (int y) { // attention:NOT remove the void
int x = y;
}