当我尝试编译它时,它说“找不到符号构造函数Armor(int,int,int,java.lang.String)”。然而,当我将Armor(钝,刺穿,切割,名字)改为Armor()时,它的效果非常好。如果我在一个文件中使用多个类,我不允许重载构造函数(这里我在一个文件中有类阻力和类Armor)。我绝对有必要将它们放在同一个文件中,因为我正在练习这个,你不能提交超过1个文件。
public class resistance
{
public static void main (String [] args)
{
int blunt=4;
int pierce=2;
int cut=7;
String name="Helmet";
Armor item = new Armor(blunt, pierce, cut, name);
}
}
class Armor
{
int blunt;
int pierce;
int cut;
String name;
void Armor()
{
blunt=0;
pierce=0;
cut=0;
name="";
}
void Armor(int a, int b, int c, String d)
{
blunt=a;
pierce=b;
cut=c;
name=d;
}
}
答案 0 :(得分:6)
void Armor(...)
是一个与班级同名的方法
Armor(...)
是构造函数。
答案 1 :(得分:3)
如果你想“重载”它,你必须明确地定义这个构造函数:
public Armor(int a,int b,int c,String d){
}
在你的装甲课上。如果你声明一个返回类型的方法,比如void
,那么它不再是一个构造函数,而是一个方法。
答案 2 :(得分:1)
这些不是构造函数。它们有返回类型,因此它们是方法。摆脱void
。
如果您使用的是IDE,请注意它为您提供的警告。例如,eclipse告诉你“这个方法有一个构造函数名称”,它可以立即帮助你实现错误。