英文:
How can I set a variable to be the same across all created objects of the same type?
问题
假设我有一个叫做 Car
的类。在这个类中有一些方法和其他变量。我有一个名为 make
的变量,然而需要保证所有的 Car
对象中这个变量的值都是相同的。唯一的问题是,在初始化 Car
对象之前,我想知道 make
的值是什么。我尝试过使用静态方法,但我可能对静态方法和静态变量的工作原理有误解。我尝试调用一个设置静态变量的静态方法,但当我创建一个 Car
对象时,它没有起作用。
例如:Car.setMake("Toyota")
其中静态方法 setMake()
设置了静态变量 make
。
然后我会创建一个 new Car()
,并期望所有的 Car
对象的 make
都是 "Toyota"。但这并不起作用。
英文:
Let's say I have a class I made called Car
. In that class there is methods and other variables. I have a variable called make
though that needs to always be the same across all Car
objects. The only problem is I want to know what make will be before a Car
object has been initialized. I tried using static but I must have a misconception of how static methods and static variables function. I tried calling a static method which sets the static variable but when I create a Car
object it did not work.
example: Car.setMake("Toyota")
Where the static method setMake()
sets the static variable make
.
Then I would create a new Car()
and expect all Car
objects to be of the make
"Toyota". This does not work.
答案1
得分: 4
你对于 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;
}
}
英文:
You're right about static
variables. Check it again. Static
variables and mothods bolong to the Class
itselfe and all instances of Class
have the same values.
Static
methods have access to static
variables and methods only, but non-static
methods have access to static
and non-static
variables and methods.
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;
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论