在java中的另一个类的构造函数中调用一个Class

时间:2014-02-04 22:04:55

标签: java

我正在尝试编写一个程序,该程序接受在一个类中创建的对象并将它们放在另一个类的构造函数中。我不明白这一般的概念。我不是在寻找代码的答案,但我正在寻找它工作的一般原因,以便我能理解该怎么做。

以下是我尝试将对象Ship的四个实例放入Fleet的代码。我不需要特定的答案,所以我理解如何将从一个类创建的对象转换为另一个类的构造函数。

public class Ship {
// instance variables

private String shipType; // The type of ship that is deployed in a fleet.
private int fuelTankSize;   // The fuel that each ship has at the start.
private double currentFuelLevel;  // the change in fuel either consumed or added.
// constuctors
// takes in the shiptype and fuelunits to be set in the driver.
public Ship(String inShip, int inFuel) {
    shipType = inShip;
    fuelTankSize = inFuel;
    currentFuelLevel = inFuel;
}


public class Fleet
{
// instance variables

// constructor 
public Fleet(Ship ship1, Ship ship2, Ship ship3, Ship ship4){

}
//methods

3 个答案:

答案 0 :(得分:1)

您缺少的是构造函数的实际调用。您真正要做的就是定义可以传递给构造函数的参数。

你实际上就像这样传递对象。

Ship ship1 = new Ship("sailboat", 5);
Ship ship2 = new Ship("sailboat", 5);
Ship ship3 = new Ship("sailboat", 5);
Ship ship4 = new Ship("sailboat", 5);
Ship ship5 = new Ship("sailboat", 5);

Fleet myFleet = new Fleet(ship1, ship2, ship3, ship4, ship5);

答案 1 :(得分:0)

因此,另一个类“拥有”Java中另一个类的对象的方式是它存储对它们的引用。 因此,当您创建ship1时,您会在ship1及其实例变量的内存中分配一个点。然后当你将它作为Fleet中的参数传递时,Fleet存储一个基本上说“ship1存储在这个内存位置”的引用,然后当你从fleet中的另一个方法使用它时,它通过转到那个内存位置来操纵ship1。 / p>

答案 2 :(得分:0)

如果Fleet构造函数的目的是为四个Ship变量赋值,那么就像使用任何其他构造函数一样:

public class Fleet
{

    // instance variables
    Ship ship1;
    Ship ship2;
    Ship ship3;
    Ship ship4;


    // constructor 
    public Fleet(Ship ship1, Ship ship2, Ship ship3, Ship ship4){
        this.ship1 = ship1;
        this.ship2 = ship2;
        this.ship3 = ship3;
        this.ship4 = ship4;

    }

    //methods
}