2

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

为了练习数组和继承等,我想创建一个小系统,其中有可以由 People 对象拥有的 Car 对象,这些对象将他们的汽车存储在数组中。汽车将具有价值,People 对象可以用金钱相互买卖汽车。

我的问题:

我希望有一个我可以调用的子程序让一年过去,这将增加一个年份计数器,并降低程序中当前存在的所有汽车的价格,并将它们的“年龄”增加 1。比如那。

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

4

3 回答 3

4

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

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

由于您要保留对它们的引用(可能在 People 对象下),因此您可以遍历所有人员并获取他们的汽车,或者您可以保留一个单独的容器(例如,一个ArrayList)来保存所有汽车。这意味着这些汽车可以通过人或您的单独容器获得。然后你遍历容器并在汽车上做你想做的事。

于 2013-05-03T11:15:09.630 回答
4

为了能够将汽车老化一年,您只需要int buildYear在 Car 类中拥有一个属性。

问题的第二部分。每辆车都有一个属性float amortizationPercentPerYear。根据车龄、amortiationPercentPerYear 和初始价格,您可以计算出准确的价格。

于 2013-05-03T11:15:16.153 回答
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; }
}
于 2013-05-03T11:23:45.167 回答