2012-04-12 91 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,那麼它不再是構造函數,而是一種方法。

相關問題