将另一个类添加到现有类中

时间:2016-11-19 11:37:13

标签: java

因此我非常想要用两个行星模拟一个宇宙,每个行星的表面都会有一个火箭。

问题是,当我试图将行星添加到宇宙时,我到处都是错误 我想知道我是否应该继续使用相同的Class或者为#34; Planet"创建一个特定的类,当我尝试定位行星时,它说该方法对于该类是未知的,尽管我们做了一个在演讲中的例子,当时没有错误

这是代码

import gdi.univrse* 

public class SomeUniverse {
    public static void main(String[]args){
        Universe u = new Universe (args);
        Planet Planet1 = new Planet(41 , 700,u);
        Planet Planet2 = new Planet(51 , 610,u);
        u.simulate();
    }
}

所以基本上它说构造函数(double,double,Universe)是未定义的 当我尝试一步一步地做它也不起作用

2 个答案:

答案 0 :(得分:1)

我删除了之前的答案,因为结果是PlanetUniverse ,您只是没有正确使用它们。

Planet类定义它的构造函数如下:

public Planet(double x, double y) {
    this();
    this.setLocation(x, y);
}

public Planet() {
    createdInstances.add(this);
    this.planet = new gdi.scene.universe.Planet();
}

这意味着您必须创建一个没有参数或带有x和y的行星,如下所示:

Planet myPlanet = new Planet(41, 700); // Location is set to 41, 700
Planet mySecondPlanet = new Planet(); // Location defaults to 0, 0

要将一个行星添加到宇宙中,您只需在宇宙上调用addEntity(myPlanet),如下所示:

import gdi.universe.* 

public class SomeUniverse {
    public static void main(String[] args){
        Universe universe = new Universe(args);
        Planet firstPlanet = new Planet(41, 700);
        Planet secondPlanet = new Planet(51, 610);

        universe.addEntity(firstPlanet);
        universe.addEntity(secondPlanet);
        universe.simulate();
    }
}

看起来gdi包是一个自定义库,由任何人提供给你(我假设你的学校/大学),他们应该在其上提供一些文档。

答案 1 :(得分:-1)

您的导入声明无法解决。如果您尝试导入该包中的所有类,则应编写

import gdi.univrs.*    // assuming you meant to leave out the first 'e'

相反,我建议您单独导入类。你说已经有一个行星类了,在这种情况下我建议你导入它以便明确使用:

import gdi.universe.Planet    // assuming it really has two 'e's

这样做的一个原因是,如果该类不存在,或者在编译时类路径中不可用,编译器会告诉您。然后你会知道这就是问题,并在你去寻找其他错误之前解决它。

现在,如果类已经存在,那么它们的构造函数已经定义。您需要阅读一些文档,告诉您合法的构造函数是什么,或者以其他方式获取该信息(例如,Eclipse会给您一条消息,说明如果写错了那些参数是预期的)。您只能使用类定义的构造函数。