자바 객체지향의 핵심 원칙 중 하나인 **캡슐화(Encapsulation)**를 실천하는 가장 대표적인 방법, Getter와 Setter에 대해 알아보겠습니다.
객체의 데이터(필드)를 외부에서 마음대로 읽거나 변경하지 못하도록 꽁꽁 숨기고, 정해진 통로를 통해서만 접근하게 만드는 기술입니다.
📘 Getter와 Setter: "데이터를 지키는 보안 요원"
1. 왜 필요한가요?
- 설명: 클래스의 필드를 public으로 열어두면 외부에서 잘못된 값을 넣어도 막을 방법이 없습니다.
- 비유: 내 지갑을 길거리에 그냥 두는 대신(public), 금고에 넣고 나에게 요청할 때만 돈을 꺼내 주는 것(Getter/Setter)과 같습니다.
- 효과: 데이터를 외부로부터 보호하고, 데이터가 변경될 때 유효성을 검사할 수 있습니다.
2. Getter (가져오기)
- 역할: 외부에서 객체의 private 필드 값을 읽어갈 때 사용합니다.
- 관례: 메서드 이름은 get + 필드이름(첫글자 대문자)으로 만듭니다.
3. Setter (저장하기)
- 역할: 외부에서 객체의 private 필드 값을 변경할 때 사용합니다.
- 관례: 메서드 이름은 set + 필드이름(첫글자 대문자)으로 만듭니다.
📦 실전 예제: "속도 제한 기능이 있는 자동차"
데이터를 어떻게 보호하는지 코드로 직접 확인해 보세요.
Java
public class Car {
// 1. 필드는 private으로 숨깁니다.
private int speed;
// 2. Setter: 값을 검사해서 넣습니다.
public void setSpeed(int speed) {
if (speed < 0) {
this.speed = 0; // 속도가 음수면 0으로 강제 조정
} else {
this.speed = speed;
}
}
// 3. Getter: 값을 안전하게 전달합니다.
public int getSpeed() {
return this.speed;
}
}
public class Main {
public static void main(String[] args) {
Car myCar = new Car();
// myCar.speed = -100; // (에러!) 직접 접근이 불가능합니다.
myCar.setSpeed(-50); // Setter를 통해 값을 넣으면 검증을 거칩니다.
System.out.println("현재 속도: " + myCar.getSpeed()); // 결과: 0
}
}
👨🏫 쉽게 이해하는 핵심 포인트
- 읽기 전용 객체: 만약 Setter를 만들지 않고 Getter만 만들면, 외부에서는 값을 읽을 수만 있고 바꿀 수는 없는 '읽기 전용' 객체가 됩니다.
- 이클립스/IntelliJ 꿀팁: 개발 도구(IDE)에서 필드만 선언하면 자동으로 Getter/Setter를 만들어주는 단축키가 있어, 일일이 타이핑할 필요는 없습니다.
- Boolean 타입: 필드 타입이 boolean일 때는 get 대신 is를 사용하는 것이 관례입니다. (예: isStop())
오늘의 요약
- Getter는 숨겨진 데이터를 꺼내오는 창구이다.
- Setter는 데이터를 저장하기 전 검사하고 넣어주는 필터이다.
- 이를 통해 객체의 독립성과 안전성을 높이는 캡슐화를 완성한다.
데이터의 안전한 출입을 관리하는 Getter와 Setter의 개념을 완벽히 정리하셨습니다!

'JAVA' 카테고리의 다른 글
| JAVA Comments (2) | 2025.08.27 |
|---|---|
| JVM (0) | 2025.08.27 |
| e.printStackTrace() (0) | 2025.08.21 |
| Sort object (0) | 2025.08.19 |
| JPA (0) | 2025.08.14 |