일반적으로 객체 지향 프로그래밍에서는 객체의 필드를 객체 외부에서 직접적으로 접근하는 것을 막는다.
왜냐하면 예를 들어 속력은 음수가 될 수 없는데, 외부에서 속력을 저장하는 변수에 음수를 저장하면 문제가 생긴다.
이를 무결성이 깨졌다고 한다.
이러한 문제점을 해결하기 위해 객체 지향 프로그래밍에서는 메소드를 통해서 필드를 변경하는 방법을 선호한다.
필드는 외부에서 접근할 수 없게 하고(private 접근 제한자 사용), 메소드는 접근할 수 없는 필드에 접근할 수 있도록 한다.
이러한 메소드를 Setter라고 한다.
외부 객체에서 데이터를 읽을 때도 메소드를 사용하는 것이 좋다.
왜냐하면 필드값을 직접 사용하면 부적절한 경우도 있기 때문이다. 이런 경우에는 메소드로 필드값을 가공한 후 외부로 전달하면 된다.
이러한 메소드를 Getter라고 한다.
Car.java
public class Car {
private int speed; //외부에서 접근할 수 없도록 접근 제한
public int getSpeed() { //Getter
return speed;
}
public void setSpeed(int speed) { //Setter
if(speed < 0) {
this.speed = 0;
return;
} else {
this.speed = speed;
}
}
}
Test.java
public class Test {
public static void main(String[] args) {
Car myCar = new Car();
myCar.setSpeed(-50); //잘못 된 속도로 변경
System.out.println("현재 속도 : " + myCar.getSpeed());
myCar.setSpeed(60); //올바른 속도로 변경
System.out.println("현재 속도 : " + myCar.getSpeed());
}
}
/*
현재 속도 : 0
현재 속도 : 60
*/
'Java Category > Java' 카테고리의 다른 글
[JAVA] 사용자 정의 예외 (0) | 2023.07.26 |
---|---|
[JAVA] 리소스(resource) 자동 닫기 (0) | 2023.07.25 |
[JAVA] 리플렉션(Reflection)과 어노테이션(Annotation) (0) | 2023.07.23 |
[JAVA] 전이 의존과 집합 모듈 (0) | 2023.07.22 |
[JAVA] 모듈(응용 프로그램 모듈화) (0) | 2023.07.21 |