자바
[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