반응형
이번 글에서는 private 필드를 외부에서 직접 접근하지 않고,
getter와 setter 메서드를 이용해
안전하게 값을 읽고 변경하는 방법을 학습합니다.
이 방식은 캡슐화(Encapsulation) 라고 하며, 객체 지향 프로그래밍의 핵심 원칙 중 하나입니다.
📦 클래스 코드 (Car.java)
package ch06.sec14;
public class Car {
private int speed;
private boolean stop;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
if (speed < 0)
this.speed = 0;
else
this.speed = speed;
}
public boolean isStop() {
return stop;
}
public void setStop(boolean stop) {
this.stop = stop;
if (stop)
this.speed = 0;
}
}
📌 실행 코드 (CarExample.java)
package ch06.sec14;
public class CarExample {
public static void main(String[] args) {
Car car = new Car();
car.setSpeed(-50);
System.out.println("현재 속도 : " + car.getSpeed());
car.setSpeed(60);
System.out.println("현재 속도 : " + car.getSpeed());
if (!car.isStop())
car.setStop(true);
System.out.println("현재 속도 : " + car.getSpeed());
}
}
💬 코드 설명
- private int speed;, private boolean stop;
→ 외부에서 직접 접근할 수 없는 비공개 필드 - public int getSpeed()
→ speed 값을 외부에서 읽을 수 있게 해주는 메서드 - public void setSpeed(int speed)
→ speed 값을 설정하는 메서드
→ 입력 값이 음수면 0으로 강제 조정 (유효성 검사) - public boolean isStop()
→ stop 상태를 외부에서 읽을 수 있게 해주는 메서드 - public void setStop(boolean stop)
→ stop 상태를 설정하고, 멈추면 speed를 자동으로 0으로 만듦
💻 실행 결과
현재 속도 : 0
현재 속도 : 60
현재 속도 : 0
📌 간단 정리
메서드 | 역할 |
getSpeed() | 현재 속도를 읽기 |
setSpeed(int) | 속도를 설정 (0 이상만 허용) |
isStop() | 현재 멈춤 여부 확인 |
setStop(boolean) | 멈춤 설정 (멈추면 속도 0) |
💡 포인트 정리
- private 필드는 객체 외부에서 직접 접근을 차단
- getter 메서드로 값을 안전하게 읽을 수 있음
- setter 메서드로 값을 제어하면서 유효성 검사(Validation) 가능
- 캡슐화는 객체의 무결성을 유지하고, 버그를 예방하는 데 큰 도움이 됨
- boolean 타입 getter는 is필드명() 형태로 작성하는 것이 관례
'프로그래밍 > JAVA' 카테고리의 다른 글
53. 접근 제한자에 따른 접근 가능 범위 (public, default, private) (0) | 2025.04.29 |
---|---|
52. 패키지와 import 사용하기 (0) | 2025.04.29 |
51. static final로 상수(Constant) 정의하기 (0) | 2025.04.29 |
50. final 필드 - 수정 불가능한 데이터 만들기 (0) | 2025.04.29 |
49. static 메서드에서 인스턴스 멤버 사용하기 (2) | 2025.04.28 |
48. static 필드와 static 메서드 (0) | 2025.04.28 |