관리 메뉴

A seeker after truth

[java] this를 되새겨보자 본문

Programming Language/개념

[java] this를 되새겨보자

dr.meteor 2020. 7. 19. 21:37

<오브젝트>를 공부하던 중 이런 코드를 만났다.

public class Screening {
	...

  public Reservation reserve(Customer customer, int audienceCount) {
          return new Reservation(customer, this, calculateFee(audienceCount),
                  audienceCount);
  }
  
}

여기서 this가 본 클래스의 인스턴스를 받을 것이란건 예상했지만, 조금 더 정확한 이해를 위해 해당 부분 <자바의 정석>을 찾아 읽었다.

 

this: 인스턴스 자신을 가리키는 참조변수. 인스턴스의 주소가 저장되어 있다. 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재한다.

 

this가 참조변수이기 때문에 이를 통해 인스턴스 변수의 멤버에 접근할 수 있다.

하지만 this를 사용할 수 있는 것은 인스턴스 멤버 뿐이다. static 메서드(클래스 메서드)에선 인스턴스 멤버들과 더불어 this 역시 사용할 수 없다. 스태틱 메서드는 인스턴스를 생성하지 않고도 호출될 수 있으므로 스태틱 메서드가 호출된 시점에 인스턴스가 존재하지 않을 수도 있기 때문이다. 그리고 스태틱 메서드는 인스턴스와 관련 없는 작업을 하기 때문에 이에 대한 정보가 필요없기 때문이다.

 

'Programming Language > 개념' 카테고리의 다른 글

[java] java thread 쓰레드(작성중)  (0) 2020.08.06
[java] java.io(작성중)  (0) 2020.08.05
Object의 정체, Map, 미뤄둔 글  (0) 2020.03.14
static vs non-static  (0) 2020.03.14