프로그래밍 언어/JAVA

JAVA) 자바 Getter/Setter 의미와 왜 사용하는지 알아보자

luana_eun 2022. 2. 28. 17:54
728x90

getter/setter를 알기 전에, 접근제한자를 먼저 알아야한다.

만약 접근제한자가 뭔지 모르면 앞의 포스트를 읽고오길 추천한다.
https://luanaeun.tistory.com/140

 

JAVA) 접근 제어자: public, protected, default, private와 Getter/Setter

접근 제어자 의미 자바는 어떤 클래스와 그 멤버에게 어느정도까지 접근할 수 있는지를 설정할 수 있다. 그 접근 권한을 지정하는것이 접근 제어자다. 사용 이유 접근을 제한하는거니 당연히 보

luanaeun.tistory.com

 

 

Getter, Setter가 무엇인가?

private를 관리하는 메서드. 

위에서 private할때 다른 클래스에서 접근하려면 해당 클래스 안의 메서드를 통해서만 가능하다고 했다. 

그 관리하는 메서드를 Getter, Setter라고 부른다.

 

private는 외부에선 접근할 수 없기때문에 꺼내는것도, 값을 넣는것도 메서드의 도움이 필요하다. 

                마치 집을 사고팔때 조심하기 위해 부동산을 중개로 해서 거래하는것과 같다. 

getter는 private를 외부로 꺼내는 메서드, setter는 private에 값을 넣는 메서드이다. 

 

Getter : 내부의 멤버변수에 저장된 값을 외부로 리턴.

          메개변수는 없고, 리턴값만 있는 메서드로 정의한다. 

          메서드명은 주로 getXXX() 메서드 형식으로 지정

          XXX은 해당 멤버변수의 변수명을 사용.

Setter : 외부로부터 데이터를 전달받아 멤버변수에 저장.

          매개변수만 있고, 리턴값은 없는 메서드로 정의.

 

 

Getter와 Setter왜 사용할까??

private는 다른 클래스에서 메서드를 통해서만 접근이 가능하다고 했다. 

근데 그 매서드를 알려줄 뭔가 시그니처같은게 없으면 어떻게될까?

 

무슨말이냐면, 위에 private를 부동산에 비유 했던걸 생각해보자.

우리는 어떤 건물의 간판에 "부동산" 혹은 "공인중개사" 등의 문구를 보면 "아~이 가게가 부동산이구나~"라고 안다. 

만약 부동산이라는 표기 없이 각자 짓고싶은대로 무작정 지으면 부동산을 찾기 힘들어진다. 

따라서 "oo부동산", "ㅁㅁㅁ부동산" 처럼 공통된 단어를 가지고 이름을 짓는것이다. 

 

메서드도 마찬가지다.

private를 관리할 메서드에게 공통된 이름을 가지게 하면 사용하기 훨씬 편리해진다. 

그럼 관리하는 메서드는 어떤 이름규칙을 지어야하는지 알아보자

 

 

 

getter, setter규칙

private 변수를 다른 클래스에 꺼내는 메서드는 get + 변수명(첫글자 대문자)

private 변수에 값을 초기화하는 메서드는 set + 변수명(첫글자 대문자)

class A {
	private int num = 10;

	public int getNum() {
		return a;
	}

	public void setNum(int a) {
		this.a = a;
	} 
}

이런식으로 이름에 규칙을 지어서 해당 메서드를 Getter/Setter라고 부르는것이다. 

이젠 메서드 이름만 봐도 어떤 private 변수에 대한 메서드인지 바로 알아볼 수 있게된다!

 

 

 

Getter/Setter 사용하기

728x90