在 Java 中,静态元素通过仅指定类名后跟 dot
运算符来访问。
假设,我有一个名为 ClassA 的类,其静态基元类型 int a = 10;
如果我有另外两个类ClassB和ClassC同时访问元素a
并进行一些更改,会发生什么变化B 类 也会影响 C 类 吗?
最佳答案
What If I have other two class
ClassB
andClassC
access the element a at same time and make some change, will the change made byClassB
also impacts in theClassC
?
只有一个ClassA.a
,因为它是静态成员。 ClassB
所做的更改会影响 ClassA.a
。 ClassC
将看到更改,因为它正在查看同一成员。
您描述的场景最好用代码和图表来表达:
类(class):
class ClassA {
static int a = 10;
}
class ClassB {
static void look() {
System.out.println("B sees " + ClassA.a);
}
static void change() {
ClassA.a = 42;
}
}
class ClassC {
static void look() {
System.out.println("C sees " + ClassA.a);
}
static void change() {
ClassA.a = 67;
}
}
使用它们:
ClassB.look(); // "B sees 10"
ClassC.look(); // "C sees 10"
ClassB.change();
ClassB.look(); // "B sees 42"
ClassC.look(); // "C sees 42"
ClassC.change();
ClassB.look(); // "B sees 67"
ClassC.look(); // "C sees 67"
图表:
+----------+ | ClassA | +----------+ +-+--->| static a | | | +----------+ +-----------+ | | | ClassB | | | +-----------+ | | | (methods) |-use-+ | +-----------+ | | +-----------+ | | ClassC | | +-----------+ | | (methods) |-use---+ +-----------+
关于Java静态元素被不同的类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001598/