충분히 쌓여가는
6.14 Getter와 Setter 본문
객체의 필드(데이터)를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질 수 있다
(예를 들어 자동차의 속력은 음수가 될 수 없는데, 외부에서 음수로 변경하면 객체의 무결성이 깨진다)
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;
}
'이것이 자바다 > 06 클래스' 카테고리의 다른 글
6.15 싱글톤 패턴 (0) | 2024.04.02 |
---|---|
6.13 접근 제한자 - 생성자/필드/메소드의 접근 제한 (0) | 2024.04.01 |
6.9 인스턴스 멤버 - 인스턴스 멤버 사용 불가 (0) | 2024.04.01 |
6.9 인스턴스 멤버 - 정적 블록 {} (0) | 2024.04.01 |
6.9 인스턴스 멤버 - 정적 멤버 (0) | 2024.04.01 |