通过其他类构造函数在main方法中创建对象时访问对象属性

时间:2017-07-11 12:22:57

标签: java object constructor main access

我有3个班级测试,工厂和电视 - 工厂旨在创建电视(课程包括在下面)。

如何访问或操作在Test Class的main方法中创建的新电视的属性(通过Test类中的Factory方法调用的TV类构造函数)。

public class TV {

    private int productionYear;
    private double price;

    public TV (int productionYear, double price){
        this.productionYear = productionYear;
        this.price = price;
    }

}

public class Factory {

    public static int numberOfTV = 0;


    public void produceTV(int a, double b){
        TV tv = new TV(a,b);
        numberOfTV++;
    }


    public void printItems(){
        System.out.println("Number of TVs is: " + numberOfTV);

    }
}

public class Test {

    public static void main(String[] args) {

        Factory tvFactory = new Factory();
        tvFactory.produceTV(2001, 399);
        tvFactory.printItems();

    }
}

2 个答案:

答案 0 :(得分:2)

public class TV {

    private int productionYear;
    private double price;

    public TV(int productionYear, double price) {
        this.productionYear = productionYear;
        this.price = price;
    }

    public int getProductionYear() {
        return productionYear;
    }

    public void setProductionYear(int productionYear) {
        this.productionYear = productionYear;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

public class Factory {

    public static int numberOfTV = 0;


    public TV produceTV(int a, double b) {
        TV tv = new TV(a, b);
        numberOfTV++;
        return tv;
    }


    public void printItems() {
        System.out.println("Number of TVs is: " + numberOfTV);

    }
}

public class Test {

    public static void main(String[] args) {

        Factory tvFactory = new Factory();
        TV tv = tvFactory.produceTV(2001, 399);
        tvFactory.printItems();

        // Do manipulation with tv reference here 

    }
}

答案 1 :(得分:0)

您的问题是您的工厂类生产电视但从未将它们运送到任何地方。

为了操纵对象,您需要对它进行引用。只需使用produceTV方法返回生成的电视。

public TV produceTV(int a, double b){
  numberOfTV++;
  return new TV(a,b);      
}

现在你创建一个从未使用过的引用;编译器很可能会消除电视对象的创建。