공부혜옹
[JAVA] Getter와 Setter 본문
일반적으로 객체 지향 프로그래밍에서 객체의 데이터는 외부에서 직접적으로 접근하는 것은 막는데, 그 이유는 객체의 데이터를 마음대로 읽고 변경할경우 무결성이 깨질 수 있기 때문이라고한다.
클래스를 선언할 때 가능하면 필드를 private로 선언해서 보호하고 Setter와 Getter를 사용해 안전하게 사용하는 것이 좋다.
예를들어 세상에 몸무게가 음수인 사람은 없다.
mySecret.weight = -10;
;하지만 위의 코드의 경우 Secret 객체의 weight 필드값을 음수로 설정한다.
이런 일들을 방지하기 위해서 외부에서 데이터를 직접 접근할 수 없도록 막고, 메소드를 거쳐 데이터를 접근하도록한다.
외부→데이터 (x)
외부→메소드→데이터 (o)
이것을 가능케 하는것이 바로 Setter메소드이다!
public void set + 필드이름(double 필드이름){
this.필드이름 = 필드이름;
}
ex)
public void setWeight(double weight) {
if(weight < 0) {
this.weight = 0; //매개변수가 음수일 경우 weight필드에 0을 저장하고 메소드 종료
return;
} else {
this.weight = weight;
}
}
데이터를 변경할 때 뿐만아니라 단순히 불러와 읽을때도 메소드를 한번 거쳐 필드값을 가공하고 전달하는 것이 좋다. ( 필드값을 사용하기 부적절한경우를 방지 할 수 있다.)
또, 필드를 private으로 접근을 제한했기 때문에 필드를 읽고자 할때 메소드를 거쳐 읽어야한다.
이때엔 Getter 메소드가 사용된다.
public 리턴타입 get + 필드이름 () {
return 필드값;
}
이때 필드타입이 boolean인 경우 Getter는 get이 아닌 is로 시작하는 것이 관례
그거 true니? false니?이런뜻인가..
SUMMARY
# 클래스를 private로 선언해서 보호하고 Setter와 Getter를 사용해 안전하게 사용
# 필드타입이 boolean일경우 get이아닌 is사용
개인적인 공부를 토대로 포스팅한 글입니다. 틀린점이나 수정할점이 있다면 알려주세요 : )