繁体   English   中英

从同一类构造的多个单独的对象

[英]Multiple seperate objects constructed from same class

初级java程序员

我创建了一个类 Car

public class Car {

  private static final double MILES_PER_YEAR = 20000;
  private static final double GAS_PRICE =  2.50;

  private static double pricePerYear;
  private static double totalPrice;

  public Car(double initialPrice, double milesPerGallon) {
    pricePerYear = (MILES_PER_YEAR / milesPerGallon);
    totalPrice = initialPrice;
}

然后在我的主函数中,我构造了两个 Car 对象

Car civic = new Car(22000, 35.5);
Car prius = new Car(27135, 55.5);

但是,当我使用 civic.getTotalPrice() 和 prius.getTotalPrice() 检查这些对象的属性时,它们总是相同的。 第二个对象构造总是覆盖第一个,当我像上面 ^^ 那样构造它们并获得两个价格时,它们都返回 27135。如果我这样定义它们,反之亦然

Car prius = new Car(27135, 55.5);    
Car civic = new Car(22000, 35.5);

对于上面的部分,civic.getTotalPrice() 和 prius.getTotalPrice() 的返回值为 22000

我认为这个问题与 public、private、static、void、final 等关键字有关。因为我不完全理解它们的意思是,但我很困惑为什么代码仍然运行,如果它是一个这样的关键字问题。

我的主要目标是比较单独对象的属性并单独修改它们,如果这有助于任何人了解我的意图。

使成员变量非静态:

public class Car {
  private static final double MILES_PER_YEAR = 20000;
  private static final double GAS_PRICE =  2.50;

  private double pricePerYear;
  private double totalPrice;

  public Car(double initialPrice, double milesPerGallon) {
    pricePerYear = (MILES_PER_YEAR / milesPerGallon);
    totalPrice = initialPrice;
  }
}

static具体意味着成员不属于一个特定实例,而是由所有成员共享。 这对于诸如MILES_PER_YEARGAS_PRICEGAS_PRICE :无论您定义什么汽车,这些值始终相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM