Java에서 클래스 이름 뒤에 dot
연산자를 지정하여 정적 요소에 액세스 할 수 있습니다.Java 정적 요소 다른 클래스로 액세스하기
내가 정적 원시 형 int a = 10;
로를 ClassA라는 이름의 클래스를 가지고 가정 내가 같은 시간에 다른 두 클래스 ClassB가 및 ClassC 액세스 요소 a
이 일부 변경하면, ClassB에 의한 변경도 ClassC에 영향을 줍니까?
Java에서 클래스 이름 뒤에 dot
연산자를 지정하여 정적 요소에 액세스 할 수 있습니다.Java 정적 요소 다른 클래스로 액세스하기
내가 정적 원시 형 int a = 10;
로를 ClassA라는 이름의 클래스를 가지고 가정 내가 같은 시간에 다른 두 클래스 ClassB가 및 ClassC 액세스 요소 a
이 일부 변경하면, ClassB에 의한 변경도 ClassC에 영향을 줍니까?
나는 무엇 동시에 다른 두 클래스
ClassB
및ClassC
액세스 요소 a를 가지고 있고, 변화가ClassC
도ClassB
영향에 의해 만들어진 몇 가지 변경하면?
정적 멤버이기 때문에 ClassA.a
이 하나뿐입니다. ClassB
에 의해 변경된 내용은 ClassA.a
에 영향을줍니다. 동일한 멤버를보고 있기 때문에 ClassC
에 변경 사항이 표시됩니다. 을 사용
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---+ +-----------+
정적 필드는 인스턴스와 관련이 없으며 클래스와 관련이 있습니다. 정적 필드를 수정하면 해당 필드에 대한 모든 참조가 할당 된 마지막 값을 반환합니다. 어떤 의미에서는 A
이 이제는 응용 프로그램 내에서 전역 변수로 정의됩니다. 대부분의 경우이 것은 좋은 것으로 간주되지 않습니다.
public class App {
public static void main(String[] args) {
B b = new B();
C c = new C();
System.out.println(A.a); //outputs 10
b.changeA();
System.out.println(A.a); //outputs 30
c.changeA();
System.out.println(A.a); //outputs 20
}
}
class A{
static int a = 10;
}
class B{
public void changeA(){
A.a = 30;
}
}
class C{
public void changeA(){
A.a = 20;
}
}
감사에 대한 귀하의 회신 케빈. Class 'App'은 동일한 프로그램에서 ClassB와 ClassC의 인스턴스를 생성하지만 ClassB가 하나의 클래스에 있으면 'App1'로, 다른 클래스 'App2'에서는 ClassC로 이름을 지정하고이 두 클래스를 실행하면 어떻게됩니까? 동시에 그러나 동시에. ClassA 정적 요소는 어떻게됩니까? – Fazy