-
자바의 중요한 키워드인 this는 객체 자신을 가리키는 레퍼런스이다
this의 기초 개념
: this는 현재 객체 자신에 대한 레퍼런스이다. 정확히는 현재 실행되고 있는 메소드가 속한 객체에 대한 레퍼런스이다. this는 컴파일러에 의해 자동관리되기 때문에 개발자는 this를 사용하기만 하면 된다.
public class Circle { int radius; public Circle(int r) { this.radius = r; } //멤버 radius public int getRadius() { return radius; } }
this는 현재 객체에 대한 레퍼런스이므로 this.radius는 현재 객체의 멤버 radius를 접근한다 \
this의 필요성
: 위의 Circle 클래스에서 메소드 getRadius()는 this를 사용하지 않았다.
return radius; //return this.radius;와 동일
클래스 내에서 멤버 radius를 접근할 때 굳이 this.radius로 할 필요가 없다
그렇다면 this는 언제 필요할까? 매개변수의 이름은 그 자체로서 코드를 읽는 사람에게 그 용도를 나타내므로, 적합한 이름을 붙이는 것이 중요하다. 그래서 Circle(int r) 생성자의 매개변수를 r 대신 다음과 같이 radius로 변경하는 것이 좋다.
public Circle(int radius) { radius = radius } ;
하지만 radius = radius 이렇게 변경하면 여기서 2개의 radius는 모두 매개변수 radius를 접근한다
이 코드에서 2개의 radius는 모두 Circle(int radius)의 매개변수 radius를 접근하기 때문에 멤버 radius를 변경하지 못한다. 자바에서는 매개변수의 이름을 멤버 변수와 같은 이름을 붙이는 경우가 많은데 이때 this를 이용하면 된다
public Circle(int radius) { this.radius = radius ; } //멤버radius //매개변수radius
또 메소드가 객체 자신의 레퍼런스를 리턴해야 하는 경우가 있는데, 이때 다음과 같이 this를 리턴하면 된다.
public Circle getMe() { return this; } //getMe()메소드는 객체 자신의 레퍼런스 리턴
* this는 객체 자신에 대한 레퍼런스
* this =/= this()
* this는 메소드에서 사용되며 현재 객체를 가리킨다
* static 메소드에서는 사용할 수 없다
this() 사용시 주의할 점
* this()는 반드시 생성자 코드에서만 호출할 수 있다
* this()는 반드시 같은 클래스 내 다른 생성자를 호출할 때 사용된다
* this()는 반드시 생성자의 첫 번째 문장이 되어야 한다
'Programming > JAVA' 카테고리의 다른 글
[JAVA/자바] Optional<ProcessHandle> (0) 2023.06.04 [JAVA/자바] ProcessHandle (0) 2023.06.04 [JAVA/자바] 생성자 개념 정리 (0) 2023.05.15 $("[name=auth_ip]").val() (0) 2022.12.01 Modal (0) 2022.07.18 댓글