[JAVA] 10. getter와 setter 메서드

Re_Go·2024년 5월 26일
0

JAVA

목록 보기
12/37
post-thumbnail

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;
    }
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.

0개의 댓글