我对如何制定这个问题有点不确定。它是关于面向对象的思维,在我的Java案例中,但更多的是关于一般概念。
为了练习数组和继承,我想创建一个小系统,其中Car对象可以由People对象拥有,他们将汽车存储在数组中。汽车将具有价值,人物对象可以用钱购买和出售汽车。
我的问题:
我希望那里有一个子程序,我可以打电话让一年通过,这将增加一年的计数器,并降低目前在该计划中存在的所有汽车的价格,并将他们的“年龄”增加1那样的事情。
我意识到我不知道如何做这样的事情;我如何执行这样的操作,不是针对特定对象,而是针对特定类的每个对象?我想这种类型的操作在大型程序中很常见,你通常怎么做呢?
答案 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; }
}