Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

충분히 쌓여가는

6.14 Getter와 Setter 본문

이것이 자바다/06 클래스

6.14 Getter와 Setter

빌드이너프 2024. 4. 1. 23:33

객체의 필드(데이터)를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있다

(예를 들어 자동차의 속력은 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨진다)

Car mycar = new Car();
myCar.speed = -100;

 

이러한 문제점 때문에 객체 지향 프로그래밍에서는 직접적인 외부에서 필드 접근을 막고 대신 메소드를 통해 필드에 접근하는 것을 선호한다 -> 메소드는 데이터를 검증해서 유효한 값만 필드에 저장할 수 있기 때문

이 역할을 하는 메소드가 Setter이다

private double speed;

public void setSpeed(double speed) {
  if(speed < 0) {
    this.speed = 0;
  } else {
    this.speed = speed;
  }
}

 

외부에서 객체의 필드를 읽을 때도 메소드가 필요한 경우가 있다

필드값이 객체 외부에서 사용하기에 부적절한 경우, 메소드로 적절한 값으로 변환해서 return 할 수 있기 때문이다

이 역할을 하는 메소드가 Getter이다

private double speed

public double getSpeed() {
  double km = speed * 1.6;
  return km;
}

 

필드 타입이 boolean인 경우

Getter는 get으로 시작하지 않고 is로 시작하는 것이 관례

private boolean stop;

//Getter
public boolean isStop() {
  return stop;
}