2020. 4. 16. 17:30ㆍ카테고리 없음
접근자 메소드
- 객체 지향 프로그래밍에서는 인스턴스가 인스턴스변수에 직접 접근하는것을 권장하지 않음.
- 변수는 private으로 만들고 메소드를 이용해 변수에 접근하는것을 권장
- 변수의 데이터를 리턴하는 메소드를 getter라고 하고, 변수의 데이터를 설정하는 메소드를
setter라고 한다
- 변수를 만들고 getter와 setter를 가지면 property라고 한다
getter
- 인스턴스 변수의 값을 리턴해주는 메소드
- 리턴 타입은 변수와 동일한 자료형으로 하고 이름은 get변수명으로, 변수명의 첫글자는 대문자
- 매개변수는 없고 메소드의 내용은 변수를 리턴하기만 하면 된다.
ex) private int num; <- 인스턴스 변수
public int getNum(){ <-getter
return num;
}
*이름을 변경하는 경우가 있는데 이 때는 변수의 자료형이 boolean인 경우 get대신 is
변수를 만들지 않고 get메소드를 만드는 경우가 있는데, 이 메소드는 연산 프로퍼티라고 해서
계산을 수행해 결과를 넘겨주는 프로퍼티
ex) 시작점의 좌표로 x,y가 있고 크기로 width와 height가 있다면 중앙점의 좌표 center는 선언할 필요 없이
x,y,width,height를 이용해 연산을 해서 리턴 가능.
이런 경우에는 center변수를 만들지 않고, getCenter()만 만들어서 사용.
setter
- 변수의 값을 설정하는 메소드
- 리턴타입은 void이고, 이름은 set변수명, 매개변수가 1개 있어야 하는데 매개변수의 자료형은 변수의 자료형과 같아야 함.
- 메소드의 내용은 매개변수의 값을 인스턴스 변수에 대입하는 것.
ex) private int num;
public void serNum(int num){
//willSet - 유효성 검사(IOS에서 하는)
this.num = num;
//didSet - log(IOS에서 하는 작업 내역, 변경 이력) 기록
}
- setter의 경우 대입하는 코드 앞과 뒤에 내용을 추가하는 경우가 종종 있음
대입하기 전에 유효성 검사를 해서 대입해도 되는지 확인을 하는 코드를 수행
대입한 다음에 변경 내용을 기록하는 코드 수행
- 접근자 메소드는 대부분의 IDE에서 자동 생성하는 기능을 제공
- 최근의 자바에서는 IDE의 기능을 이용하는 것이 아니고 lombok이라는 라이브러리가 있는데
이 lombok을 이용해서 생성하기도 하고 Spring에서는 어노테이션을 이용해서 유효성 검사까지 자동
주입해 준다.