객체 지향 프로그래밍에서 객체의 데이터는 외부에서 접근하는 것을 차단해야한다. 왜냐하면 객체의 데이터를 외부에서 읽고 변경하게 되면 객체의 무결성이 깨지기 때문이다. 이를 위해 데이터는 외부에서 접근하지 않도록 막고, 객체 내부에 정의된 메소드를 통해 데이터를 변경한다.
getter
는 객체의 field에서 데이터를 불러오는 method를 의미한다. 가장 기본적인 형태는 다음과 같다.
static public class Student {
// field
private String name;
private HashMap<String, Integer> scores;
// getter for field name
public String getName() {
return name;
}
// getter for field scores
public HashMap<String, Integer> getScores() {
return scores;
}
}
위 코드에서 getName()
과 getScores()
는 객체의 필드 값을 리턴한다. 이를 응용해서 field 값을 간단하게 수정해 수정된 값을 반환하는 getter
method를 사용할 수도 있다.
static public class Car{
// field
private int speed;
// getter for speed
public int getSpeed() {
return speed;
}
// getter for speed converted in km
public double getSpeed_Km() {
double tmp = speed * 1.6;
return tmp;
}
}
setter
는 객체의 field에 데이터를 저장하는 method를 의미한다. 가장 기본적인 형태는 다음과 같다.
static public class Student {
// field
private String name;
private HashMap<String, Integer> scores;
// setter
public void setName(String name) {
this.name = name;
}
public void setScores(HashMap<String, Integer> scores) {
this.scores = scores;
}
}
위 코드에서 setName()
과 setScores()
는 객체의 필드 값에 input받은 값을 저장한다. 이를 응용해서 field 값을 간단하게 수정해 수정된 값을 저장하는 setter
method를 사용할 수도 있다.
static public class Car{
// field
private int speed;
// setter for speed
public void setSpeed(int speed) {
if(speed < 0){
speed = 0; // 입력값이 0보다 작은 경우 0을 저장
}
this.speed = speed;
}
}