2015-06-27 37 views
-2

這裏是我的代碼Java靜態構造函數不能正常工作

class Bomb { 
    static String description = "bomb description"; 
    static int id = 1; 

    private String name; 
    private int size; 

    public static void Bomb() { 
    id++; 
    System.out.println(" " + description + " " + id); 

    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public void setSize(int size) { 
     this.size = size; 
    } 

    public void printout() { 
     System.out.println(" " + name + size); 
    } 
} 

public class array { 
    public static void main(String args[]) { 
     Bomb.Bomb(); 
     Bomb detenator = new Bomb(); 
     Bomb destroyer = new Bomb(); 
     destroyer.setName("hr4"); 
     destroyer.setSize(43); 
     detenator.setName("m1s"); 
     detenator.setSize(34); 

     detenator.printout(); 
     destroyer.printout(); 

    } 

} 

我想說明與每個炸彈對象打印。但是說明本身打印。 任何人有任何想法如何解決這個問題? 也請建議我可以寫這個代碼的任何替代方法,但不要讓它變得複雜。我剛開始學習java,所以我可能不會理解複雜的東西。

+0

除了一個事實,即有一個靜態構造函數沒有這樣的事情,你有什麼期待行說'Bomb.Bomb來初始化對象(); '做什麼? –

回答

3

我簡短,沒有「靜態構造函數」。

你可能想要的東西,引用靜態成員,像這樣:

public Bomb() { 
    id++; 
    System.out.println(" " + Bomb.description + " " + id); 
} 

請看一遍Java tutorial of constructors

構造函數聲明的樣子方法聲明,但它採用的名稱該類並沒有返回類型。

0

你的構造函數定義完全搞砸了。

  1. 由於@Reut Sharabani提到沒有像靜態構造函數的東西。您正在使用構造函數來啓動類的對象。靜態讓你使用方法只需調用ClassName.staticMethod()而不創建類的對象(一個排除另一個)。如果存在靜態構造函數,則可以編寫類似的內容,例如ClassName.ClassName(),這是沒有意義的。

  2. 構造函數沒有返回任何值,所以將它們聲明爲void是一個錯誤。再次構造函數用於一些值(但不要)

+0

@extremly_new_to_coding我讚賞你的謝意,但如果你接受我的回答並投票,那將會很好。 –