#java
#java
Вопрос:
Начинающий 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 и т. Д. Поскольку я не совсем понимаю, что они означают, да, но я не понимаю, почему код все еще выполняется, если это такая проблема с ключевыми словами.
Моя главная цель — сравнить атрибуты отдельных объектов и изменить их по отдельности, если это поможет кому-нибудь понять, к чему я клоню.
Ответ №1:
Сделайте переменные-члены нестатическими:
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_YEAR
и GAS_PRICE
: они всегда одинаковы, независимо от того, какой car вы определяете.
Комментарии:
1. Это имеет большой смысл, спасибо за помощь. Static намного проще, чем я изначально думал.