2016-03-01 103 views
0

這可能是一個愚蠢的問題,但我不能讓我的程序運行。
我必須:使用參數創建一個構造函數

添加一個構造函數來英雄只需要一個世界作爲一個參數。除了設置在通過了世界的實例變量的參數在構造函數中,不要做任何事情。

到目前爲止,我

public Hero(World world){ 
    this.world = world; 
} 

這是正確的?以後一直試圖在我的程序中調用世界,但它不起作用。

+0

你得到了什麼錯誤,請提供一個* reproducible *例子以及編譯器/運行時輸出。 –

+0

你在調用構造函數嗎?'Hero heroVar = new Hero(world)'? – JCollerton

+0

我的編譯器說它'找不到符號' –

回答

2

這確實是定義一個構造函數的方式,它將輸入參數作爲輸入。

您可能忽略的一個問題是,當調用構造函數時,您必須爲其提供一個值。如果您例如已定義的類Hero

public class Hero { 

    private World world; 

    public Hero (World world) { 
     this.world = world; 
    } 

} 

不能再構建一個Hero

 
Hero hero = new Hero(); 

事實上,new Hero();期望一個World。例如你可以先構造一個World和飼料它英雄:

World world = new World(); 
Hero hero = new Hero(world); 

你還必須定義(在一個名爲World.java文件)一類World。例如存根:

public class World { 

} 

(如果你不自己提供一個構造函數,Java將定義一個default constructor itself)。

取決於你如何編譯項目(使用IDE,使用命令行,......),你有時需要這個文件將自己添加到您的項目,或編譯:

javac Hero.java World.java 

(也許還有其他的.java文件)

0

當你沒有在你的代碼中定義任何構造函數時,java提供了一個默認的無參數構造函數,但是當你顯式地定義了一個接受某些參數的構造函數時,java不會提供默認的構造函數。因此,您需要在這裏定義默認的無參數構造函數。

public Hero(){ 

}