Getter : 값을 가지고오는 메소드
Setter : 값을 설정하는 메소드
Getter 선언 방법
데이터타입 get변수명() { return 변수명; }
String getModelName() {return modelName;}
Setter 선언 방법
void set변수명(전달값) { 변수명 = 전달값; }
void setModelName(String ModelName){ this.modelName = modelName; }
Getter와 Setter를 활용하는 이유를 아래 예제를 통해 보자.
Ex) 블랙박스 상품에 대해서 5000원할인 이벤트를 한다고 해보자.
b1.price = b1.price-5000; 이 적용되어야하는데 실수로 b1.price = -5000; 으로 적용해버렸다.
그럼 블랙박스의 가격이 - 5000원이 되버리는 문제가 발생할 수 있다.
Ex) 고객이 블랙박스의 해상도를 질문했다고 해보자.
b1.resolution = FHD라는 답변을 해야하는데 실수로 b1.resolution을 주석처리해버렸다.
그럼 고객문의에 대해 null 이라고 답변을 하게되는 문제가 발생할 수 있다.
위와 같은 실수를 예방하기 위해 Getter와 Setter를 활용해보자.
아래와 같이 BlackBox 클래스 내에 Getter와 Setter를 생성하였다.
public class BlackBox {
String modelName; //모델명
String resolution; //해상도
int price; //가격
String color; // 색상
int serialNumber; //시리얼번호
static int counter=0; //시리얼번호를 생성(0, 1, 2 ++ ) - 클래스변수(모든객체에 공통적용)
static boolean canAutoReport = false; //자동신고기능
//Getter : 값을 가지고 오는 메소드
//Setter : 값을 설정하는 메소드
String getModelName(){
return modelName;
}
void setModelName(String modelName){
this.modelName = modelName;
}
String getResolution(){ //isEmpty: 비어있는문자
if(resolution == null || resolution.isEmpty()){
return "판매자에게 문의하세요.";
}
return resolution;
}
void setResolution(){
this.resolution = resolution;
}
int getPrice(){
return price;
}
void setPrice(int price){
if(price<100000){
this.price = 100000;
}else{
this.price = price;
}
}
String getColor(){
return color;
}
void setColor(String color){
this.color = color;
}
...
}
위 실수 예제의 경우를 대응하기 위하여 아래 기능을 추가하였다.
- getReolution() 은 resolution 값이 null 이거나 빈 문자인 경우 "판매자에게 문의하세요" 를 리턴.
- setPrice() 은 전달된 price 값이 10만원 이하인 경우에는, 10만원으로 적용. (하한선 설정)
그리고 아래와 같이 b2 객체를 만들고 동일한 실수를 했다고 해보자.
-Resolution 값 설정 안함.
-Price 값에 - 5000원 적용.
동일한 실수를 하였지만 Getter와 Setter를 활용하여 가격과 해상도가 다르게 출력된 것을 확인할 수 있다.
이처럼 Getter와 Setter를 이용하게 되면 값을 설정하다가 발생하는 오류를 줄일 수 있고,
값을 가져오는 과정에서도 값이 없다거나 이상한 값을 가져올 때 대안으로 줄 수 있는 값을 설정할 수 있다.
'Spec UP - Backend > 나도코딩의 자바기본편' 카테고리의 다른 글
Chap_07. 패키지 (0) | 2023.04.28 |
---|---|
Chap_07. 접근 제어자 (0) | 2023.04.27 |
Chap_07. 생성자 (0) | 2023.04.25 |
Chap_07. This (1) | 2023.04.25 |
Chap_07. 클래스 메소드 (0) | 2023.04.21 |
댓글