2012-04-12 93 views
0

当我尝试编译它时,它说“找不到符号构造函数Armor(int,int,int,java.lang.String)”。但是,当我将护甲(钝器,刺穿,切割,名称)更改为护甲()时,它的效果非常好。如果我在单个文件中使用多个类(这里我在一个文件中有类阻力和类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

在Java中使用每个文件设置一个类是普遍接受的。这将有助于你清晰和未来的调试,以坚持这个习惯用法。 – 2012-04-12 23:04:27

回答

6

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

1

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

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

3

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

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

在你的护甲类。如果你声明一个返回类型的方法,如void,那么它不再是构造函数,而是一种方法。

相关问题