자바

[JAVA] Getter, Setter

planting grass 2025. 3. 6. 10:01
728x90

1. 목적

Getter와 Setter는 객체의 데이터를 안전하게 관리하기 위한 메서드다.

객체의 필드(멤버 변수)를 private으로 선언하고, 외부에서 직접 접근하지 못하게 차단하여 Getter(읽기)와 Setter(쓰기) 메서드를 통해 값을 가져오거나 변경할 수 있도록 한다.

Getter와 Setter를 통해 아래 이점을 얻을 수 있다.

캡슐화(Encapsulation): 객체의 내부 데이터를 보호하고, 직접 수정할 수 없도록 한다.

데이터 검증 가능: Setter를 통해 특정 조건을 만족하는 값만 설정하도록 제한할 수 있다.

유지보수성 향상: 나중에 내부 구현을 변경하더라도 Getter와 Setter를 통해 일관된 인터페이스 제공한다.

2. 특징

Getter (읽기 메서드)

  • 필드 값을 반환하는 메서드
  • 보통 get필드명() 형식으로 작성됨
  • 읽기 전용으로 제공 가능
    • Setter 없이 Getter만 만들면 값 변경 불가능

Setter (쓰기 메서드)

  • 필드 값을 변경하는 메서드
  • 보통 set필드명(값) 형식으로 작성됨
  • 데이터 유효성 검사 가능

사용 예시

class Person {
    private String name;
    private int age;

    // Getter (읽기)
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    // Setter (쓰기)
    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        if (age >= 0) { // 나이 검증 로직 추가
            this.age = age;
        } else {
            System.out.println("나이는 0 이상이어야 합니다.");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();

        // Setter를 사용하여 값 설정
        p.setName("이순신");
        p.setAge(30);

        // Getter를 사용하여 값 가져오기
        System.out.println("이름: " + p.getName()); // 이름: 이순신
        System.out.println("나이: " + p.getAge()); // 나이: 30

        // 잘못된 값 설정 시도
        p.setAge(-5); // 나이는 0 이상이어야 합니다.
    }
}

자바에서는 Lombok 라이브러리를 사용하면 Getter와 Setter를 자동 생성할 수 있다.

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
class Person {
    private String name;
    private int age;
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName("강감찬");
        p.setAge(40);

        System.out.println(p.getName()); // 강감찬
        System.out.println(p.getAge()); // 40
    }
}
728x90