반응형
이번 글에서는 객체 내부에 데이터를 저장하는 필드(field)와,
그 필드를 조작하고 제어하는 메서드(method)를 사용하는 구조를 학습합니다.
특히 while 루프를 통해 객체의 상태 변화에 따라 동작을 제어하는 방식을 실습합니다.
📦 클래스 코드 (Car.java)
package ch06.sec08.exam03;
public class Car {
private int gas;
void setGas(int gas) {
this.gas = gas;
}
boolean checkGas() {
if (gas == 0) {
System.out.println("가스가 없습니다.");
return false;
}
System.out.println("가스가 있습니다.");
return true;
}
void run() {
while (true) {
if (gas <= 0) {
System.out.println("멈춥니다. (가스 잔량 : " + gas + ")");
return;
}
System.out.println("달립니다. (가스 잔량 : " + gas + ")");
gas--;
}
}
}
📌 실행 코드 (CarExample.java)
package ch06.sec08.exam03;
public class CarExample {
public static void main(String[] args) {
Car car = new Car();
car.setGas(5);
if (car.checkGas()) {
System.out.println("출발합니다.");
car.run();
}
System.out.println("가스를 주입하세요.");
}
}
💬 코드 설명
- private int gas;
→ 가스 잔량을 저장하는 비공개(private) 필드 - setGas(int gas)
→ 외부에서 가스를 설정하는 메서드 (Setter) - checkGas()
→ 현재 가스 상태를 확인하고, 결과를 boolean으로 반환 - run()
→ 가스가 남아있는 동안 "달립니다" 출력하고,
가스가 0이 되면 "멈춥니다" 출력 후 반복 종료 - while (true)
→ 무한 반복, 가스가 0이 되면 return으로 탈출
💻 실행 결과
가스가 있습니다.
출발합니다.
달립니다. (가스 잔량 : 5)
달립니다. (가스 잔량 : 4)
달립니다. (가스 잔량 : 3)
달립니다. (가스 잔량 : 2)
달립니다. (가스 잔량 : 1)
멈춥니다. (가스 잔량 : 0)
가스를 주입하세요.
📌 간단 정리
메서드 | 역할 |
setGas(int) | 가스 주입 |
checkGas() | 가스 존재 여부 확인 |
run() | 가스가 있을 때까지 주행 |
💡 포인트 정리
- private로 선언된 필드는 외부 직접 접근이 불가능 → 메서드로 간접 접근
- Setter 메서드를 통해 필드 값을 안전하게 변경
- Checker 메서드를 통해 객체 상태를 외부에 알림
- 반복문(while)을 돌리면서 상태 변화로 탈출 조건 제어
- 객체는 상태(state) + 동작(behavior)을 가진다 → 이 예제는 그 기본 구조를 잘 보여줌
'프로그래밍 > JAVA' 카테고리의 다른 글
48. static 필드와 static 메서드 (0) | 2025.04.28 |
---|---|
47. this를 활용한 메서드 호출과 객체 동작 (0) | 2025.04.28 |
46. 메서드 오버로딩(Method Overloading) (0) | 2025.04.28 |
44. 가변 인자(Varargs)를 이용한 메서드 작성 (0) | 2025.04.28 |
43. 클래스의 메서드 정의와 호출 (0) | 2025.04.25 |
42. 생성자 오버로딩 - 다양한 방식의 객체 초기화 (0) | 2025.04.25 |