Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 this 키워드로 static(정적) 멤버를 참조할 수 있을까?

아니요. Java에서 this 키워드는 클래스의 static(정적) 멤버를 참조하는 데 사용할 수 없습니다. 그 이유는 this 키워드가 현재 객체(instance)를 가리키기 때문입니다.

this 키워드와 static 멤버의 차이

this 키워드는 클래스의 현재 객체를 가리키는 참조 변수입니다. 반면 static 멤버는 특정 객체에 속하지 않고 클래스 자체에 속하기 때문에, 호출할 때 객체가 전혀 필요하지 않습니다.

즉, Java에서 static 멤버는 객체를 생성하지 않고도 클래스 이름을 통해 직접 접근할 수 있습니다. 객체 없이 존재하는 static 멤버를, 객체를 가리키는 this로 참조하려는 것은 논리적으로 성립하지 않으며, static 컨텍스트에서 this를 사용하면 컴파일 오류가 발생합니다.

예제 코드

다음 예제는 this 키워드 없이 static 메서드와 static 변수를 직접 호출하는 방법을 보여줍니다.

public class StaticTest {
    static int a = 50;
    static int b;

    static void show() {
        System.out.println("Inside the show() method");
        b = a + 5;
    }

    public static void main(String[] args) {
        show();
        System.out.println("The value of a is: " + a);
        System.out.println("The value of b is: " + b);
    }
}

실행 결과

Inside the show() method
The value of a is: 50
The value of b is: 55

정리

  • this는 현재 객체를 가리키는 참조이므로, 객체가 필요 없는 static 멤버에는 사용할 수 없습니다.
  • static 멤버는 클래스이름.멤버 형태로 직접 접근하는 것이 올바른 방법입니다.
  • static 메서드(main 포함) 안에서 this를 사용하려 하면 컴파일 오류가 발생합니다.