在Java中用另一个类创建一个类的两个对象

时间:2013-11-11 21:08:20

标签: java class constructor

我正在尝试在SiloManager类中创建一个Silo类的两个对象,以便我可以访问这两个对象的方法。但我似乎无法使SiloManager构造函数工作,也不能正确地实例化类。 (我是java的初学者)。这是我的代码:

public class GrainSiloManager {

    public GrainSilo silo1 = new GrainSilo(100);
    public GrainSilo silo2 = new GrainSilo(50);


    public GrainSiloManager(GrainSilo silo1, GrainSilo silo2) {
        this.silo1 = silo1;
        this.silo2 = silo2;
    }

    private void showStatus() {
        System.out.println("The current grain in silo1 is: " + silo1.getGrain());
        System.out.println("The current grain in silo2 is: " + silo2.getGrain());
    }

}

正如我说我是一个初学者所以请轻松嘿嘿,谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

public GrainSilo silo1 = new GrainSilo(100);
public GrainSilo silo2 = new GrainSilo(50);


public GrainSiloManager(GrainSilo silo1, GrainSilo silo2) {
    this.silo1 = silo1;
    this.silo2 = silo2;
}

这将编译为:

public GrainSilo silo1;
public GrainSilo silo2;


public GrainSiloManager(GrainSilo silo1, GrainSilo silo2) {
    this.silo1 = new GrainSilo(100);
    this.silo2 = new GrainSilo(50);
    this.silo1 = silo1;
    this.silo2 = silo2;
}

你可以看到几乎没有任何意义。您将覆盖您创建的对象,并将对象传递给构造函数。

答案 1 :(得分:0)

你的构造函数将取代“public!” silo1和silo2对象包含传入的任何内容。您可以像这样更改构造函数

 public GrainSiloManager() {
    super();
 }

或甚至更短(但等效)

 public GrainSiloManager() {
 }

然后像这样称呼它

 new GrainSiloManager().showStatus();

或者您可以使用现有方法(将替换构造函数中的GrainSoloManager.silo1和GrainSoloManager.silo2)

 GrainSilo silo1 = new GrainSilo(100);
 GrainSilo silo2 = new GrainSilo(50);
 new GrainSiloManager(silo1, silo2).showStatus();