자바: getter, setter 메서드

친환경 개발자
|2024. 5. 23. 21:18

 

 

Getter와 Setter란?

  • 객체지향 프로그래밍에서 클래스의 속성(필드)을 외부에서 접근할 수 있도록 하는 메서드
  • 데이터 보존을 위해 private으로 객체를 보호하므로, 이 객체의 값에 접근하기 위해서는 같은 클래스 안의 메서드를 만들어두고 해당 메서드를 통해 접근해야 함.
  • Getter : 클래스의 필드 값을 반환하는 메서드
  • Setter : 클래스의 필드 값을 설정하는 메서드

 

작성법

  • Getter 메서드 :
    - 반환타입은 필드의 타입과 동일
    - get + 필드이름(첫 글자 대문자)

  • Setter 메서드 :
    - 반환타입은 void
    - set + 필드이름(첫 글자 대문자)

public class Person {
    // private으로 객체보호

    private String name;   
    private int age;

    // 이름 반환
    public String getName() {
        return name;
    }

    // 이름 설정
    public void setName(String name) {
        this.name = name;
    }

    // 나이 반환
    public int getAge() {
        return age;
    }

    // 나이 설정
    public void setAge(int age) {
        this.age = age;
    }
}

 

 

사용하는 이유?

  • 캡슐화: 클래스 내부 구현을 숨기고(정보 은닉), 외부에서의 접근을 제한하여 객체 보호
                 >> 마치 TV를 볼 때 TV가 어떻게 작동하는지 원리를 우리가 모르고 쓰는 것과 같음
  • 유효성 검사 : Setter를 통해 값 설정 시 유효성 검사 수행 가능
  • 디버깅, 유지보수 : 코드의 가독성을 높이고 메서드 수정을 통해 유지보수 용이하게 함

 

장점

  • 데이터 접근 제어: 객체의 속성에 대한 읽기 및 쓰기 권한 제어
  • 캡슐화

단점

  • 실질적인 정보 노출: 변수를 private를 선언하더라도 getter, setter를 통해 접근하면 데이터 접근이 가능
  • 외부 접근 시 캡슐화가 지켜지지 않아 코드 안정성이 무너질 수 있음

 

Getter, Setter 메서드 사용 시 데이터에 접근 권한을 주는 것과 마찬가지.

데이터의 무결성을 약화시킨다.

따라서 사용을 지양하는 것이 좋다.

 

 

인텔리제이 꿀팁

인텔리제이에서 편리하게 getter, setter 메서드를 작성하는 팁이 있다.

마우스 우클릭 - Generate 클릭

 

Getter and Setter 클릭

 

 

 

OK
생성 완료