0

当我尝试编译它时,它说“找不到符号构造函数 Armor(int,int,int,java.lang.String)”。但是,当我将 Armor(blunt, pierce, cut, name) 更改为 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;
}
}
4

3 回答 3

6

void Armor(...)是一个与类同名的方法。
Armor(...)是一个构造函数。

于 2012-04-12T22:56:34.000 回答
3

如果你想“重载”它,你必须明确定义这个构造函数:

public Armor(int a,int b,int c,String d){
}

在你的盔甲课上。如果你声明一个带有返回类型的方法,比如void,那么它就不再是构造函数,而是一个方法。

于 2012-04-12T22:57:55.037 回答
1

这些不是构造函数。它们有一个返回类型,所以它们是方法。摆脱void.

如果您使用的是 IDE,请注意它给您的警告。例如 eclipse 告诉你“这个方法有一个构造函数名称”,它可以立即帮助你意识到错误。

于 2012-04-12T22:57:29.327 回答