-
[JAVA] this 키워드JAVA 2021. 9. 29. 11:35
Java Script는 context에 따라서 다양한 값을 가지고 어떻게 사용하는지에 따라 그 역할이 구분된다. 필자가 Java Script를 먼저 공부 했던 터라 JAVA의 this도 깊게 알고 싶어 졌다. JAVA의 this는 Java Script 보다는 비교적 간단한 룰에 의해 사용 된다.
JAVA에서 this란?
- this는 인스턴스 (객체) 자신을 의미
- 자기 자신의 메모리를 가리킴
- 생성자에서 다른 생성자 호출 할 때 사용
- 인스턴스 자신의 주소를 반환
JAVA에서 this가 사용 되는 3가지 경우
1. 클래스 안의 생성자 (Constructor) 또는 메서드의 매개변수 이름과 클래스의 멤버변수와 이름이 동일 할 때
public class Universe { private String galaxy; private String star; public Universe(String galaxy, String star) { // galaxy = galaxy; // star = star; *생성자 매개변수와 클래스의 멤버변수 이름이 동일한 경우 this가 없으면 에러가 난다. this.galaxy = galaxy; this.star = star; // 이 경우 이렇게 this를 붙여 줘야 한다. } public Universe(String str1, String str2) { galaxy = str1; star = str2; // 매개변수와 멤버변수 이름이 다를 경우에는 this가 없어도 괜찮다. } }
2. 클래스에 정의된 다른 생성자 호출
public class Universe { private String galaxy; private String star; // 다른 생성자를 가리키는 this가 포함된 생성자는 최 상단에 작성 되야함 public Universe() { this("Adromeda", "Proxima A") // Universe(String galaxy, String start)를 호출 } public Universe(String galaxy, String star) { this.galaxy = galaxy; this.star = star; } }
- 클래스에 여러개의 생성자가 오버로딩 되어 있을 때 깔끔한 위와 같이 this를 이용하면 깔끔한 소스 코드를 작성 할 수 있다.
- this로 다른 생성자를 호출할 때 메서드를 호출 하는 것 처럼 this(매개변수)의 형태로 이용하면 된다.
3. 클래스에서 만들어진 인스턴스 자신의 참조값을 전달 하고 싶을 때
public class Universe { private String galaxy; private String star; public Universe(String galaxy, String star) { this.galaxy = galaxy; this.star = star; } public Universe getUniverseInstance() { return this; // 인스턴스 자신을 리턴해 준다. } }
- 빌더패턴에서 . 으로 체인을 맺어 값을 추가 하고 싶을 때 인스턴스 자신을 return 해주는 this를 사용한다.
'JAVA' 카테고리의 다른 글
[JAVA] java.io.File 의 mkdir()과 mkdirs() (0) 2021.11.02 [IntelliJ] Google Style Formatter 적용 방법 (0) 2021.09.29 [JAVA] 구글 자바 네이밍 (naming) 가이드 (0) 2021.09.29 [JAVA] 알고리즘 풀이를 위한 자바 입출력 (0) 2021.09.27 [JAVA] 상속 Implements, extends 차이 (0) 2021.09.15