如何影响一个类的所有对象? (JAVA)

时间:2013-05-03 11:10:27

标签: java oop class object global

我对如何制定这个问题有点不确定。它是关于面向对象的思维,在我的Java案例中,但更多的是关于一般概念。

为了练习数组和继承,我想创建一个小系统,其中Car对象可以由People对象拥有,他们将汽车存储在数组中。汽车将具有价值,人物对象可以用钱购买和出售汽车。

我的问题:

我希望那里有一个子程序,我可以打电话让一年通过,这将增加一年的计数器,并降低目前在该计划中存在的所有汽车的价格,并将他们的“年龄”增加1那样的事情。

我意识到我不知道如何做这样的事情;我如何执行这样的操作,不是针对特定对象,而是针对特定类的每个对象?我想这种类型的操作在大型程序中很常见,你通常怎么做呢?

3 个答案:

答案 0 :(得分:4)

你不能,真的。至少不干净。

首先,您需要保留对Car个对象的引用,否则它们将被垃圾收集(从内存中删除)。

由于您要保留对它们的引用(可能在People对象下),您可以通过所有人来获取他们的汽车,或者您可以保留一个单独的容器(例如,ArrayList)保留所有汽车。这意味着汽车可以通过人员或单独的容器获得。然后你在容器中迭代并按照自己的意愿在汽车上进行操作。

答案 1 :(得分:4)

为了能够将汽车老化一年,您只需要在汽车课程中使用属性int buildYear

问题的第二部分。每辆车都获得一个属性float amortizationPercentPerYear。根据汽车的年龄,amoriationPercentPerYear和初始价格,您可以计算出确切的价格。

答案 2 :(得分:2)

您需要ArrayList<Car>中的静态Car个实例,或者更好地保存每个Car中的构建年份并计算价格:

class Car
{
    private static int currentYear = 2013;

    public static void newYear() { ++currentYear; }

    private int constructYear;
    private double newPrice;

    public Car(double price)
    {
        newPrice = price;
        constructYear = currentYear;
    }

    public int getAge() { return currentYear - constructYear; }

    public double getPrice() { return newPrice - newPrice * getAge() * CONSTANT; }
}