이론 정리/java
java에서 정적 멤버를 접근하는 방법??(feat.클래스이름)
철매존
2023. 1. 30. 22:48
728x90
정적 멤버를 접근하는 방법??
java에서 정적 맴버를 접근할 때에는
public class Ryoochan {
static int iq;
public static void main(String[] args) {
System.out.println(Ryoochan.iq); // 이런 식으로
}
}
요렇게, 클래스이름.멤버이름
으로 접근한다.
왜지...?
일관된 방법
이게 사실 정적멤버에 접근하는 방식은 3개가 있다.
정적멤버
사용- 같은 패키지
- 상속한 경우
- 사용 가능
- 상속하지 않은 경우
- 사용 불가
- 상속한 경우
- 같은 패키지
this.정적멤버
사용- 같은 패키지
- 상속한 경우
- 사용 가능
- 상속하지 않은 경우
- 사용 불가
- 상속한 경우
- 다른 패키지
- 상속한 경우
- 사용 가능
- 상속하지 않은 경우
- 사용 불가
- 상속한 경우
- 같은 패키지
클래스이름.정적멤버
사용- 같은 패키지
- 상속한 경우
- 사용 가능
- 상속하지 않은 경우
- 사용 가능
- 상속한 경우
- 다른 패키지
- 상속한 경우
- 사용 가능
- 상속하지 않은 경우
- 사용 가능
- 상속한 경우
- 같은 패키지
이렇게, 클래스이름.정적멤버
를 사용하는 경우는 어떤 경우에도 사용 가능하다.
다른 방식은 막 상황따라 되고 안되고가 나뉘어서... 일관되지 않는다.
메모리의 물리적 접근
클래스이름.정적멤버
를 통해 변수에 접근하면
- 해당 메모리 영역에 한번에 접근!
반면 참조변수.정적멤버
를 통해 접근하는 경우는
- 참조변수가 스택 영역에 존재한다.
- 이 참조변수가 힙 영역에의 객체를 가리킴
- 객체가 다시 정적 멤버를 가리킴
물리적 접근에서도 바로바로 접근하는게 훨씬 효율적이다.