개요
자바의 객체 지향 프로그래밍에서, Getter와 Setter는 객체의 멤버 변수에 접근하고 값을 설정하는 중요한 역할을 하는 메서드입니다. 이 글에서는 Getter와 Setter의 개념, 사용 방법, 그리고 왜 이러한 메서들이 필요한지에 대해 자세히 설명하겠습니다.
Getter와 Setter의 정의
Getter
- Getter는 객체의 멤버 변수의 값을 반환하는 메서드입니다. 일반적으로 get으로 시작하는 메서드 이름을 가지며, 해당 멤버 변수의 값을 읽을 때 사용됩니다. Getter 메서드는 보통 인자를 받지 않고, 해당 멤버 변수의 값을 반환합니다.
Setter
- Setter는 객체의 멤버 변수에 값을 설정하는 메서드입니다. 일반적으로 set으로 시작하는 메서드 이름을 가지며, 해당 멤버 변수의 값을 변경할 때 사용됩니다. Setter 메서드는 보통 해당 멤버 변수의 값을 인자로 받아 설정하며, 반환 값은 일반적으로 void입니다.
사용 예제
다음은 Person 클래스에서 Getter와 Setter를 사용하는 예제입니다.

왜 Getter와 Setter를 사용할까?
캡슐화 (Encapsulation)
- Getter와 Setter를 사용하면 객체의 멤버 변수에 직접 접근하는 것을 막을 수 있습니다. 이는 캡슐화의 개념을 구현하여 데이터의 접근을 제어할 수 있도록 해줍니다. 멤버 변수를 private으로 선언하고, Getter와 Setter를 통해 접근하여 데이터의 무결성과 보안을 유지할 수 있습니다.
데이터 유효성 검사
- Setter 메서드를 통해 값을 설정할 때, 추가적인 로직이나 유효성 검사를 수행할 수 있습니다. 예를 들어, 특정 범위의 값만 허용하거나, 빈 값이 들어오지 않도록 검사할 수 있습니다.
public void setAge(int age) {
if (age < 0) {
this.age = 0;
} else {
this.age = age;
}
}
코드의 안정성과 유지보수성
- Getter와 Setter를 사용하면 코드의 안정성과 유지보수성을 높일 수 있습니다. 직접적인 필드 접근 대신, 메서드를 통해 접근하기 때문에 이후에 로직을 변경하거나 추가하기가 더 쉽습니다.
실제 활용 예제
게임 캐릭터의 스탯 관리
다음은 게임 캐릭터의 스탯을 관리하는 예제입니다. 여기서 스탯은 0 이상의 값만 허용하도록 설정되어 있습니다.


public class Stat {
private int power;
private int dex;
private int intel;
public int getPower() {
return power;
}
public void setPower(int power) {
if (power < 0) {
this.power = 0;
} else {
this.power = power;
}
}
public int getDex() {
return dex;
}
public void setDex(int dex) {
if (dex < 0) {
this.dex = 0;
} else {
this.dex = dex;
}
}
public int getIntel() {
return intel;
}
public void setIntel(int intel) {
if (intel < 0) {
this.intel = 0;
} else {
this.intel = intel;
}
}
public static void main(String[] args) {
Stat character = new Stat();
character.setPower(999);
character.setDex(999);
character.setIntel(999);
System.out.println("나의 힘 능력치는 : " + character.getPower());
System.out.println("나의 민첩 능력치는 : " + character.getDex());
System.out.println("나의 지능 능력치는 : " + character.getIntel());
// 음수 값 테스트
character.setPower(-1);
character.setDex(-1);
character.setIntel(-1);
System.out.println("나의 힘 능력치는 : " + character.getPower());
System.out.println("나의 민첩 능력치는 : " + character.getDex());
System.out.println("나의 지능 능력치는 : " + character.getIntel());
}
}
이클립스에서 자동 생성하기
이클립스와 같은 IDE를 사용한다면, Getter와 Setter를 자동으로 생성할 수 있습니다.
- 클래스 파일을 열고, 소스 메뉴를 클릭합니다.
- Generate Getters and Setters를 선택합니다.
- 생성하고 싶은 Getter와 Setter를 체크하고, OK를 클릭합니다.
이렇게 하면 필요한 Getter와 Setter 메서들이 자동으로 생성됩니다.
결론
Getter와 Setter는 자바의 객체 지향 프로그래밍에서 데이터의 접근을 제어하고, 데이터의 무결성과 보안을 유지하는 중요한 역할을 합니다. 직접적인 필드 접근 대신, 메서드를 통해 접근하여 코드의 안정성과 유지보수성을 높일 수 있습니다. 이러한 메서들을 적절히 사용하면, 더 안전하고 유지보수가 쉬운 코드를 작성할 수 있습니다.
'JAVA' 카테고리의 다른 글
| JAVA에서 사용하는 추상 클래스에 대한 이야기 (1) | 2024.12.16 |
|---|---|
| 자바에서 Class 상속하기 (1) | 2024.12.13 |
| 자바에서 사용하는 생성자(Constructor)에 대해 알아보기 (1) | 2024.12.13 |
| 자바에서 메서드 오버로딩(Method Overloading) 하기 (0) | 2024.12.12 |
| 자바에서 사용하는 메서드(Method)에 대해 알아보기 (0) | 2024.12.12 |