Language/JAVA

(JAVA)Getter와 Setter

doheun 2023. 1. 22. 15:07
반응형

객체지향프로그래밍에서 객체들의 데이터(멤버변수)를 외부에서 직접적으로 접근하는 것을 방지하기 위해서 Getter와 Setter를 사용하여 접근하는 방법을 사용한다
또한, 외부에서 메소드를 거쳐서 데이터를 변경(Setter)하고
데이터를 읽는 방법(Getter)을 사용하는 것이 좋다.
메소드를 통해서 데이터에 접근하는 것이 좋은 이유는 메소드는 매개변수의 값을 유효한 값만 저장하기 때문에 객체의 무결성을 보장할 수 있기 때문이다.


Getter

private 접근제한자로 필드를 만들고 필드의 값을 숨긴 채 내부의 값을 꺼낼 때

Setter

private 접근제한자로 필드를 만들고 전달 받은 값을 내부에서 변경해 필드에 넣을 때


코드


public class GetSet {
    //외부에서 접근할 수 없도록 접근제한자 private
    private int price;

    // getter를 통해 setter로 저장한 값을 가져 올수 있음
    public int getPrice() {
        return price;
    }

    // 외부에서 price값에 접근하여 값을 검증 할 수 있음
    public void setPrice(int price) {
        // 클래스변수가 유효하지 않은 값을 가질경우 예외 처리가능
        if (price < 0) {
            this.price = 0;
            return;
        } else {
            this.price = price;
        }
    }

}

//실행
public class GetSetTest {

    public static void main(String[] args) {
        GetSet gs=new GetSet();
        gs.setPrice(-11000);
        System.out.println(gs.getPrice());
        gs.setPrice(10000);
        System.out.println(gs.getPrice());
    }

}
//0  
//10000

getter,setter를 적용하려는 멤버변수에 setPrice를 통해 음수를 넣을 경우 메서드 내부에서 0으로 초기화 하기 때문에 첫번째 출력은 0이 나온다. 두번째는 유효한 범위의 값이 외부에서 들어오기 때문에 정상적으로 setPrice메서드에 저장이 되고 getPrice메서드를 통해 얻을 수 있다. 이클립스에서는 ctrl+3 단축키로 Generate Getters and Setters를 검색하면 setter와 getter를 이용할 변수를 선택하여 자동생성 할 수 있다.

반응형

'Language > JAVA' 카테고리의 다른 글

(JAVA)IO  (0) 2023.01.27
(JAVA)예외 처리  (0) 2023.01.26
(JAVA)인터페이스  (0) 2023.01.20
(JAVA)추상 클래스  (0) 2023.01.19
(JAVA)상속-super, this  (0) 2023.01.19