2016-03-01 94 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(){ 

} 
相关问题