Post

Java 8, this

Java, 주요 문법.

문법 : this.

옛날에도, 다시 공부를 시작한 지금도 이게 뭘까 생각이 드는 문법 중 첫번 째,
this에 대해 정리해보려합니다.

this란?

먼저 언제나 그래왔듯, this의 사전적 의미먼저 살펴보면, 단순하게 “이것”이라고 하네요.
뭐, 단순하게 생각하면 어릴 때 잠깐 배운 영어에서도 ‘this’는 항상 “무언가를 가리킬 때” 썼던 것 같습니다.

Java에서도 비슷하긴 합니다.
다만 가리키는 것이 “이것”이 아닌 자기 자신일 뿐입니다.
이전 포스팅에서 배웠던 객체와 클래스, 그리고 인스턴스에서 자주 사용되는 this는 자기 자신을 의미합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car {
	private int modelNo;
	private String modelName;


	public int modelNo; 
	public String modelName; 

	public void modelNo(int modelNo) {
		this.modelNo = modelNo;
	}
	
	public void modelName(String modelName) {
		this.modelName = modelName;
    }
}

이 블로그에서 제일 자주 등장하는 Car클래스.
오늘도 등장했습니다.
내용을 보시면 this.modelNo = modelNo; 라는 부분이 있습니다.
여기가 오늘 this의 핵심이라 할 수 있습니다.

1
2
3
public void setModelNo(int modelNo) {
	this.modelNo = modelNo;
}

modelNo은 차량 모델의 고유번호 정도라 생각하고 보시면,
public void setModelNomodelNo의 데이터를 설정하는 메소드입니다.
보시면 this.modelNo = modelNo 부분이 있습니다.
여기서 thissetModelNo의 매게변수 modelNo에 할당된 메모리를 그대로 사용한단 뜻입니다.
말이 조금 어렵게 느껴질 수도 있겠네요.
쉽게 풀어서 설명해보겠습니다.


1
2
3
public void setModelNo(int modelNo) {
	this.modelNo = modelNo;
}

이 부분을 보시면 setModelNo 함수는 매게변수 modelNo를 선언했습니다.
그리고 this.modelNo = modelNo라고 작성되었습니다.
여기서 thissetModelNo가 선언한 modelNo를 뜻합니다.
“저것”이 아니라 “자기 자신”을 뜻하는 거죠.


굳이 이렇게 작성하는 이유는 가독성때문입니다.
setModelNo와 매게변수 modelNo가 서로 다른 이름일 경우
굳이 this를 사용하지 않아도 되지만, setModelNo
이름 그대로 modelNo를 설정하는 함수입니다.

1
2
3
public void setModelNo(int number) {
    numebr = number;
}

이런 식으로 작성되도 문제는 발생하지 않지만,
코드의 가독성이 현저히 떨어지기에 modelNo와 함수의 이름을
맞추서 사용하는 겁니다.


오늘은 this의 가장 흔한 사용법에 대해 알아보았고,
다음 포스팅엔 this()를 정리해보겠습니다.

This post is licensed under CC BY 4.0 by the author.