JAVA) 자바 Getter/Setter 의미와 왜 사용하는지 알아보자
getter/setter를 알기 전에, 접근제한자를 먼저 알아야한다.
만약 접근제한자가 뭔지 모르면 앞의 포스트를 읽고오길 추천한다.
https://luanaeun.tistory.com/140
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 사용하기