[JAVA] getter와 setter 메서드

Re_Go·2024년 5월 26일
0

JAVA

목록 보기
12/37
post-thumbnail
post-custom-banner

1. getter, setter 메서드의 역할

클래스 및 객체 내의 멤버들은 앞으로 설명할 접근 제한자에 따라 외부에서 멤버 변수를 접근하는대에 제한이 있는데요. 이때 사용되는 것이 바로 gettersetter 메서드 입니다.

이 두 메서드는 따로 존재하는 라이브러리 키워드는 아니고, 사용자가 은닉 되어있는 멤버를 간접적으로 제어하고자 할 때 생성하게 되는 메서드를 의미하는데, 특정 멤버의 상태를 얻어오고자 할 경우 메서드의 접두어로 get 붙이고, 특정 멤버에 특정한 값으로 할당하거나 초기화 할 경우에는 접두어로 set 붙여 접근 제한이 있는 멤버 요소를 간접적으로 접근 및 제어하는 것이 가능해집니다.

이럴 경우 해당 멤버의 보안성을 최대한으로 유지하면서 필요한 작업만 수행할 수 있다는 점에서 클래스 작성시 단골로 따라다니는 메서드라고 할 수 있겠습니다. 특히나 getter, setter 메서드를 이용하면 필드 변수에 할당되는
(참고로 getter 메서드 중 접근하는 멤버의 타입이 boolean일 경우 접두어로 관례상 get, set을 붙이는게 아니라 is를 붙입니다.)

public class Person {
    // public으로 선언된 필드
    public String name; // 이름

    // private으로 선언된 필드
    private int age;     // 나이

    // default로 선언된 필드 (접근 제한자를 명시하지 않으면 default로 설정됨)
    boolean marriage; // 결혼 여부

    // protected로 선언된 필드
    protected String address; // 주소

    // 매개변수를 받지 않을 때 생성자를 기본 속성으로 지정
    public Person(){
        this("John Doe", 30, false); // 다른 생성자 호출
    }

    // 전달 받는 매개변수가 있을 때
    public Person(String name){
        this(name, 30, false); // 다른 생성자 호출
    }

    // 전달 받는 매개변수가 있을 때
    public Person(String name, int age){
        this(name, age, false); // 다른 생성자 호출
    }

    // public 생성자
    public Person(String name, int age, boolean marriage) {
        this.name = name;
        this.age = age;
        this.marriage = marriage;
    } 

    // Getter 메서드
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

// boolean 타입 멤버의 경우 get이 아니라 is를 붙여줍니다. (setter는 다른 멤버들과 동일합니다.)
    public boolean isMarried() {
        return marriage;
    }

    protected String getAddress() {
        return address;
    }

    // Setter 메서드
    public void setName(String name) {
        this.name = name;
    }
	// 나이를 세팅할 때 범위를 주면서 세팅할 수 있음.
    public void setAge(int age) {
		this.age = age >= 0 && age <= 150 ? age : 0;
	}

    public void setMarried(boolean marriage) {
        this.marriage = marriage;
    }

    protected void setAddress(String address) {
        this.address = address;
    }
}

특히 이러한 gettersetter는 당장 필요하지 않아 보이더라도, 후에 DTO(Data Transfer Object)의 요소들을 세팅 할때나, Spring의 MVC 모델에서 각 데이터 요소들의 정보를 저장할 때 주로 사용되므로 필수적으로 알아야 하는 개념이라고 생각하시면 되겠고,

뿐만 아니라 getter와 setter를 일일이 작성하지 않아도 각 IDE마다 getter나 setter를 자동 완성해주는 기능 또한 지원하며, Lombok과 같은 특정 라이브러리를 사용하면 단순한 어노테이션 만으로도 쉽게 getter와 setter를 자동으로 부여할 수도 있습니다.

profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.
post-custom-banner

0개의 댓글