JAVA

Getter Setter

lshjju 2025. 8. 25. 16:02

자바 객체지향의 핵심 원칙 중 하나인 **캡슐화(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
    }
}

👨‍🏫 쉽게 이해하는 핵심 포인트

  1. 읽기 전용 객체: 만약 Setter를 만들지 않고 Getter만 만들면, 외부에서는 값을 읽을 수만 있고 바꿀 수는 없는 '읽기 전용' 객체가 됩니다.
  2. 이클립스/IntelliJ 꿀팁: 개발 도구(IDE)에서 필드만 선언하면 자동으로 Getter/Setter를 만들어주는 단축키가 있어, 일일이 타이핑할 필요는 없습니다.
  3. 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