這可能是一個愚蠢的問題,但我不能讓我的程序運行。
我必須:使用參數創建一個構造函數
添加一個構造函數來英雄只需要一個世界作爲一個參數。除了設置在通過了世界的實例變量的參數在構造函數中,不要做任何事情。
到目前爲止,我
public Hero(World world){
this.world = world;
}
這是正確的?以後一直試圖在我的程序中調用世界,但它不起作用。
這可能是一個愚蠢的問題,但我不能讓我的程序運行。
我必須:使用參數創建一個構造函數
添加一個構造函數來英雄只需要一個世界作爲一個參數。除了設置在通過了世界的實例變量的參數在構造函數中,不要做任何事情。
到目前爲止,我
public Hero(World world){
this.world = world;
}
這是正確的?以後一直試圖在我的程序中調用世界,但它不起作用。
這確實是定義一個構造函數的方式,它將輸入參數作爲輸入。
您可能忽略的一個問題是,當調用構造函數時,您必須爲其提供一個值。如果您例如已定義的類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
文件)
當你沒有在你的代碼中定義任何構造函數時,java提供了一個默認的無參數構造函數,但是當你顯式地定義了一個接受某些參數的構造函數時,java不會提供默認的構造函數。因此,您需要在這裏定義默認的無參數構造函數。
public Hero(){
}
你得到了什麼錯誤,請提供一個* reproducible *例子以及編譯器/運行時輸出。 –
你在調用構造函數嗎?'Hero heroVar = new Hero(world)'? – JCollerton
我的編譯器說它'找不到符號' –