반응형
객체 지향 프로그래밍에서 객체의 데이터를 외부에서 마음대로 읽고 변경하는 것을 방지하기 위해 메소드를 통하여 데이터를 변경하는 방법을 사용함
데이터는 외부에서 접근할 수 없도록 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 함
클래스 선언 시 필드를 private로 선언해서 외부로부터 보호하고, 필드에 대한 Setter와 Getter 메소드를 작성해 필드값을 안전하게 변경/사용 함
Setter : 메소드가 매개값을 검증해서 유효한 값만 데이터로 저장하게 함
Getter : 외부에서 객체의 데이터를 읽을 때, 객체의 필드값이 객체 외부에서 사용하기 부적잘한 경우 메소드를 사용하여 필드값을 가공한 후 외부로 전달함
- 필드 타입이 boolean일 경우 Getter는 is로 시작
외부에서 필드값을 읽을 수만 있고 변경하지 못하도록 하려면 Getter 메소드만 선언하든지, Setter 메소드를 private 접근 제한을 갖도록 선언
public class Car {
// 필드
private int speed;
private boolean stop;
// 생성자 : speed = 0, stop = false
// 메소드
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
if (speed < 0) {
this.speed = 0;
return;
} else {
this.speed = speed;
}
}
public boolean isStop() {
return stop;
}
public void setStop(boolean stop) {
this.stop = stop;
this.speed = 0;
}
}
public class Example {
public static void main(String[] args) {
Car myCar = new Car();
// 잘못된 속도 변경
myCar.setSpeed(-50);
System.out.println("현재 속도 : " + myCar.getSpeed()); // 현재 속도 : 0
// 올바른 속도 변경
myCar.setSpeed(60);
// 멈춤
if (!myCar.isStop()) {
myCar.setStop(true);
}
System.out.println("현재 속도 : " + myCar.getSpeed()); // 현재 속도 : 0
}
}반응형