Setter
: 직접적인 외부에서의 필드 접근을 막고, 데이터를 검증해서 유효한 값만 필드에 저장하는 역할을 하는 메소드
// private 접근 제한으로 외부에서 접근 불가
private double speed;
public void setSpeed(double speed) {
if(speed < 0) {
// 매개 값이 음수일 경우 speed 필드를 0으로 저장하고, 메소드 실행 종료
this.speed = 0;
return;
} else {
this.speed = speed;
}
}
Setter 기본 작성법
private 타입 fieldName // 필드 접근 제한자: private
//Setter
public void setFieldName(타입 fieldName){
this.fieldName = fieldName;
}
- 필드 접근 제한자: private
- 접근 제한자: public
- 리턴 타입: void
- 메소드 이름: set + 필드이름(첫 글자 대문자)
- 매개변수 타입: 필드타입
Getter
: 필드 값이 객체 외부에서 사용하기에 부적절한 경우, 메소드로 적절한 값으로 변환해서 리턴하는 역할을 하는 메소드
private double speed; // speed의 단위는 마일
public double getSpeed() {
// 필드값인 마일을 km단위로 화산 후 외부로 리턴
double km = speed*1.6;
return km;
}
Getter 기본 작성법
private 타입 fieldName // 필드 접근 제한자: private
//Getter
public 타입 getFieldName(){
return fieldName;
}
- 필드 접근 제한자: private
- 접근 제한자: public
- 리턴 타입: 필드타입
- 메소드 이름: get + 필드이름(첫 글자 대문자)
- 리턴값: 필드 값
→ 필드 타입이 boolean일 경우 Getter은 is로 시작하는 것이 관례!
예제
public class Car {
// 필드 선언
private int speed;
private boolean stop;
// speed 필드의 Getter/Setter 선언
public int getSpeed(){
return speed;
}
public void setSpeed(int speed){
if(speed < 0){
this.speed = 0;
}else{
this.speed = speed;
}
}
// stop 필드의 Getter/Setter 선언
public boolean isStop(){
return stop;
}
public void setStop(boolean stop){
this.stop = stop;
if(stop == true) this.speed = 0;
}
}
public class CarExample {
public static void main(String[] args) {
Car car = new Car();
// 잘못된 속도 변경
car.setSpeed(-100);
System.out.println("현재 속도: " + car.getSpeed());
// 올바른 속도 변경
car.setSpeed(100);
System.out.println("현재 속도: " + car.getSpeed());
// 멈춤!
if (!car.isStop()) {
car.setStop(true);
}
System.out.println("현재 속도: " + car.getSpeed());
}
}
// 결과 값
// 현재 속도: 0
// 현재 속도: 100
// 현재 속도: 0
'[Java] 자바' 카테고리의 다른 글
| [JAVA]MVC Pattern (2) | 2024.07.23 |
|---|---|
| [Intellij] new에서 Class 생성이 안될 때 (0) | 2024.07.22 |
| [JAVA] 상속과 구현의 차이(extends와 implements) (0) | 2024.07.09 |
| [JAVA] 인터페이스 (1) | 2024.07.08 |
| [JAVA] 생성자 (0) | 2024.07.02 |