객체 지향 프로그래밍 언어인 자바에서는 데이터를 보호하기 위해 외부에서 직접적으로 접근하는 것을 막아두는 경우가 있다.
외부에서 마음대로 데이터를 읽고 변경하게 되면
무결성(해당 객체의 결점이 없는 상태)이 깨질 수 있기 때문이다.
예를 들어, 나이나 키, 자동차의 속도 같은 것들은 음수가 될 수 없다.
만약 외부에서 해당 데이터를 음수로 변경하게 되면 객체의 무결성이 깨진다.
MyCar.speed = -30;
이러한 경우 접근 제어자 private를 사용해서 필드의 직접적인 접근은 막아두고,
메서드를 통해 데이터에 접근 및 변경하는 방법이 권장된다.
이때
getter와setter메서드를 사용하면 객체의 무결성을 해치지 않고 데이터를 안전하게 사용할 수 있다. 또한, 필드를 노출하면서도 필드의 내부 표현을 숨길 수 있다.
외부에서 객체의 데이터를 읽을 때 사용한다.
아무런 값을 전달하지 않고 호출한다.
외부에서 객체의 데이터를 읽어올 때도 안전하게 값을 유지할 수 있다.
private 타입 fieldName
public 리턴타입 getFieldName() {
return fieldName;
}
getFieldName() 과 같이
get+필드 이름형식의 이름을 가진다.
접근 제한자는public, 리턴 타입은필드의 리턴 타입으로, 리턴 값은필드값으로 한다.
외부에서 객체의 데이터를 수정할 때 사용한다.
객체가 입력 값을 setter 메서드의 매개변수로 넘겨주고,
값을 검사한 후 그 값이 필드의 값으로 적절한 경우에만 저장하게 된다.
값을 변경하는 역할은 생성자에서도 가능하다.
그러나 생성자가 없는 경우도 있기 때문에, setter를 이용해 값을 입력할 수 있다.
public 리턴타입 setFieldName(타입 fieldName) {
this.fieldName = fieldName;
}
setFieldName(타입 fieldName)과 같이
set+필드이름형식의 이름을 가진다.
접근 제한자는public, 리턴 타입은void로, 함수의 매개 변수 타입은필드 타입으로 한다.
참고 : https://m.blog.naver.com/leejjoo112/222007699174, https://kephilab.tistory.com/54