객체 지향 프로그래밍에서 정보 은닉과 캡슐화를 위해 사용되는 개념이다.
클래스의 내부 구현을 숨기고, 외부에서의 직접적인 접근을 막아 객체의 데이터를 보호한다.
// Getter, Setter를 사용하지 않고 접근 제한자를 public으로 둔 경우
public class Car {
public String model; // 모델명 public
}
public class Main(){
Car car = new Car();
car.model = "blah"; // 외부에서 잘못된 값을 여과 없이 주입할 수 있다.
}
// 접근 제한자를 private으로 두고 Getter, Setter를 사용하는 경우
public class Car2 {
private String model; // 모델명 private
public String getModel(){
return this.model; // 필드 자체가 아닌, 필드의 값을 반환
}
public void setModel(String model){
// setter에 유효성 검사 로직 추가 가능
this.model = model;
}
}
public class Main(){
Car car = new Car();
car.setModel("blah"); // 외부에서 잘못된 값을 주입하여도 내부에서 유효성 검사가 실행되도록 할 수 있다.
}
클래스의 특정 프로퍼티 값을 읽을 수 있도록 하는 메서드
get이라는 접두어를 붙인 것이 메서드명이 된다.name 프로퍼티의 경우 getName() 메서드가 된다.클래스의 특정 프로퍼티 값을 설정하거나 수정할 수 있도록 하는 메서드
set이라는 접두어를 붙인 것이 메서드명이 된다.name 프로퍼티의 경우 setName(String name) 메서드가 된다.