객체 자신을 가리키는 this

kangsun·2023년 3월 18일
0

Java

목록 보기
40/44

this가 하는 일


  • 인스턴스 자신의 메모리를 가리킴
  • 생성자에서 또 다른 생성자를 호출 할 때 사용
  • 자신의 주소(참조값)을 반환함



생성된 인스턴스 메모리의 주소를 가짐


  • 클래스 내에서 참조변수가 가지는 주소값과 동일한 주소값을 가지는 키워드
public void setYear(int year) {
	this.year = year;
}
Birthday day = new Birthday();
day.setYear(2000);


setYear가 호출이 되면 this라는 스택메모리가 생성되고 
이 thisBirthday인 인스턴스 자신을 가리키는 참조변수가 된다.

day.setYear(2000); 의 day.Birthday라는 인스턴스(객체) 자신을 가리키는 것.

참조변수 this

  • 인스턴스 자신을 가리키는 참조변수
  • 인스턴스 메서드(생성자 포함)에서 사용가능
  • 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용

    → 참조변수.변수이름
    → 그 객체의.color / 그 객체의.gearType / 그 객체의.door

  • this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다. 모든 인스턴스 메서드에 지역변수로 숨겨진채로 존재한다. (선언하지않고 사용가능)
  • this(), this(매개변수) : 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용한다.
    • this. : 모든 인스턴스 메서드에 지역변수로 숨겨진채로 존재한다. 의 설명

      - 원래 진짜 이름은 this.a, this.b 이다.

      - long a, b : 인스턴스 변수의 진짜 이름은 this.a, this.b 임
      - 매개변수와 이름이 같으므로 원래 이름대로 this.a,this.b를 써줘서 매개변수와 구분을 해주는 것이다. (iv와 lv 구분)

      - 이 부분은 원래 이름은 this.a, this.b 지만 이렇게 생략이 가능한 것이다.
      - 왜냐하면 this를 붙여주지 않아도 a와 b가 인스턴스변수인 것을 알기때문.




생성자에서 다른 생성자를 호출하는 this()


  • 클래스에 생성자가 여러개인 경우, this를 이용하여 생성자에서 다른 생성자를 호출할 수 있음
  • 생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 쓸 수 없음

생성자의 역할은 인스턴스를 초기화하는 역할이다.

기본생성자에 있는 this()에서 매개변수가 (String, int) 이 있으면, 매개변수에 맞는 자료형이 매핑이되어 생성자가 호출되는데 호출이 끝나야 인스턴스 생성이 끝나는 것이다.
this()가 호출되면 인스턴스 생성이 끝나지 않은 상태이므로 this() 이전에 다른 코드를 집어넣으면 오류가 생긴다.


  • 같은 클래스 안에 있는 다른 생성자를 호출할 때 사용
    → 왜냐? 그냥 규칙임
  • 다른 생성자 호출시 첫 줄에서만 사용가능

    → 오류: 1. 두번째 줄에 생성자 호출함 / 2. this가 아닌 생성자 이름을 씀
  • 생성자들의 역할 = iv(멤버변수) 초기화
  • 오버로딩을 하는 경우는 하는 일이 비슷할 때 해준다.
  • 코드 중복 제거

profile
코딩 공부 💻

0개의 댓글