자바의 정석 가자!

[자바의 정석 - 기초편] Chapter6 - 36,37 생성자 this(), 참조변수 this

'쪼리' 2022. 10. 31. 17:58

ch6-36 생성자 this()

- 같은 클래스 안에 있는 생성자들끼리 호출할 때, 클래스 이름 대신에 this 사용

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

 

생성자가 하는 일 : iv 초기화

코드 중복을 제거하기 위해, 생성자들끼리 서로 호출한다.

생성자 this(), 코드의 중복 제거 예시

ch6-37 참조변수 this

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

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

- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용

 

참조변수 this_인스턴스 변수와 지역변수 차이

원래 인스턴스 변수 쓸 때, "참조변수.변수이름" 으로 쓰지만

같은 클래스니까, this 생략 가능

 

하지만 오른쪽 같은 경우는, this를 생략하면 이름이 똑같으니까 지역변수랑 구분이 안 되기 때문에 this 붙여주기

 

<정리>

정리

 

public class MyMath {
// iv
long a,b; //this.a, this.b -> 진짜 이름 (this 생략 가능)


MyMath(int a, int b) { // 매개변수 : lv
this.a = a; // this.a : iv, a : lv
this.b = b; // this.b : iv, b : lv

// 여기서는 this를 왜 써?

// iv랑 lv 구별하려고! this 생략 불가!

// this는 인스턴스 메서드(생성자 포함)에서만 사용 가능
}

long add() {
// iv
return a + b; // return this.a + this.b
}

static long add(long a, long b) { // 클래스 메서드(static메서드)
// 클래스 메서드에서 this 사용 불가

// 클래스 메서드는 객체 생성 없이 호출하기 때문에. iv 사용 불가.

// 매개변수 : lv, a + b : lv
return a + b; // lv 
}
}