#java
#java
Вопрос:
Допустим, у меня есть класс, который я вызвал Car
. В этом классе есть методы и другие переменные. У меня есть вызываемая переменная make
, которая всегда должна быть одинаковой для всех Car
объектов. Единственная проблема в том, что я хочу знать, каким будет make до Car
инициализации объекта. Я пытался использовать static, но, должно быть, у меня неправильное представление о том, как функционируют статические методы и статические переменные. Я попытался вызвать статический метод, который устанавливает статическую переменную, но когда я создаю Car
объект, он не работает.
пример: Car.setMake("Toyota")
Где статический метод setMake()
устанавливает статическую переменную make
. Тогда я бы создал new Car()
и ожидал, что все Car
объекты будут make
иметь «Toyota». Это не работает.
Комментарии:
1. Пожалуйста, отредактируйте вопрос и покажите код о том, как вы используете static
2. Похоже, было бы разумнее создать экземпляр factory.
3. @OldProgrammer нет, Олег понял это.
Ответ №1:
Вы правы насчет static
переменных. Проверьте это еще раз. Static
переменные и модули привязаны к самому Class
себе, и все экземпляры Class
имеют одинаковые значения. Static
методы имеют доступ только к static
переменным и методам, но non-static
методы имеют доступ к static
и non-static
переменным и методам.
public static void main(String... args) {
Car audi = new Car();
Car bmw = new Car();
System.out.println(Car.getMake()); // null
Car.setMake("Toyota");
System.out.println(Car.getMake()); // Toyota
System.out.println(audi.getMake()); // Toyota
System.out.println(bmw.getMake()); // Toyota
}
class Car {
private static String make;
public static void setMake(String make) {
Car.make = make;
}
public static String getMake() {
return make;
}
}
Комментарии:
1. Ах, я вижу, что я вызывал статический метод перед созданием экземпляра
Car
объекта!2. @ErlichBachman это не имеет значения. Вы можете записывать и читать
static
переменные даже до первого экземпляра класса.