this문은 사용 방법이 크게 두가지 이다.
(1) 참조변수 This
•
현재 객체 자신을 가리키는 참조변수
•
this는 컴파일러에서 자동으로 생성한다. ( 따로 this 객체 만들 필요 없음)
•
주로 생성자에서 매개변수 이름과 필드 이름이 동일한 경우에 혼동을 막기 위해서 사용한다
class Song {
String title, artist, country;
int year;
public Song(String title, String artist, int year, String country) {
this.title = title; // song()의 매개변수로 들어 오는 값을
this.artist = artist; // Song 클래스의 변수(인수)로 받아 들인다는 코드
this.year = year;
this.country = country;
}
Java
복사
(2) 생성자 함수 this()
•
주의점: this() 사용시에는 생성자 호출 코드 안에서 맨 첫줄에 써줘야 한다.
•
함수사용이유: 코드 중복제거 위해 같은 작업을 하는 코드를 부른다. (밑 코드 참고)
Class Car {
String color;
String gearType;
int door;
Car(String c, String g, int d) {
color = c; // 참조형 this를 써서 구분할 수 있지만, 변수명을 달리 사용하였으므로
gearType = g; // 따로 this를 넣어주지 않았다.
door =d;
}
// 1. this함수를 활용하여 중복없이 간단한 코드를 만들었다.
Car() {
this("White","auto",4);
}
// 2. this 함수를 사용하지 않아 중복되는 코드가 많고 난잡하다.
Car() {
color = "white";
gaerType = "auto";
door = 4;
}
// 3. 기본적으로 this()는 괄호안에 매개변수의 수가 일치되는 생성자를 따라가 불러온다.
Car() {
this();
}
// 만약 위 코드처럼 매개변수 없이 호출하면 Car의 디폴트 생성자가 호출된다.
}
Java
복사
(3) 참조변수 this와 this()의 차이점
this는 참조변수, this() 생성자함수다. 따라서 this에는 인스턴스의 주소가 저장되어 있고, this()은 생성자를 호출할 때 사용하는 명령어이다.