Programming/Java

[JAVA] 생성자 this(), 참조변수 this

Supreme_YS 2021. 10. 11. 19:50

자바의 정석 강의를 기반으로 작성했습니다.


- 생성자 this()

* 생성자에서 다른 생성자 호출할 때 사용

* 다른 생성자 호출시 첫 줄에서만 사용 가능

* 같은 클래스의 다른 생성자를 호출할 때 사용합니다. 

 

- 참조변수 this

* 인스턴스 자신을 가리키는 참조 변수

* 인스턴스 주소가 저장되어 있습니다.

* 인스턴스 메서드(생성자 포함) 에서 사용가능

* LV 와 IV 를 구별할 때 사용한다.

* 모든 인스턴스 메서드에 지역 변수로 숨겨진채로 존재합니다. ( 선언을 하지 않아도 사용이 가능 ) 

Car(String c, String g, int d) {
	// 같은 클래스 내에선 this 생략 가능
    // color는 iv, c는 lv
    color = c;
    gearType = g;
    door = d;

Car(String color, String gearType, int door) {
	// this.color는 iv, color는 lv
    this.color = color;
    this.gearType = gearType;
    this.door = door;
}
public class This {
    long a, b ; // this.a , this.b 진짜 이름
                // 인스턴스 변수

    This(int a, int b) { // 생성자
        this.a = a; // 똑같은 이름의 지역변수 int a, int b가 선언되어 있기 때문에
        this.b = b; // 생략이 불가능하고 참조변수 this를 통해 인스턴스 변수(this.a, this.b)와 지역변수(a,b)를 구분해 준다.
    }

    long add () { // 인스턴스 메서드
        return a + b; // return this.a + this.b;
                      // 인스턴스 변수
    }

    static long add(long a, long b) { // 클래스 메서드(static 메서드)
        return a + b; // long a, long b와 return문의 a, b는 같은 지역변수이기 때문에 this 사용 불가
        // static 메서드는 객체 생성없이 호출이 가능하기 때문에 iv 사용 불가. 그러므로 this 사용을 못하는 것임.
    }
}