[Java 15] 자바 - Getter와 Setter 메소드

학습목표

  1. Getter와 Setter의 사용 목적을 정확히 이해한다.
  2. Getter와 Setter를 적절하게 사용할 수 있다.

Getter와 Setter의 사용

객체 지향 프로그래밍에서 객체의 데이터는 객체 외부에서 직접적으로 접근하는 것을 막습니다. 그 이유는 객체의 데이터를 외부에서 마음대로 읽고 변경할 경우 객체의 무결성이 깨질수 있기 때문입니다. 이를 위해 객체 지향 프로그래밍에서는 메소드를 통해 데이터를 변경하는 방법을 선호합니다. 이처럼 데이터를 변경하는 메소드가 Getter와 Setter가 하는 것입니다.

Getter

외부에서 객체의 데이터를 읽을 경우 메소드를 사용하는 것이 좋습니다. 객체 외부에서 객체의 필드값을 적절하게 사용할 수 있도록 메소드로 필드값을 가공한 후 외부에 전달하는데 메소드가 Getter입니다.

double getSpeed() {
  double km = speed*1.6;  //필드값인 마일을 km 단위로 환산해서 외부로 리턴
  return km;
}

Setter

데이터는 외부에서 접근을 막고 메소드는 공개해서 외부에서 메소드를 통해 데이터에 접근하도록 유도하는 것입니다. 이는 메소드는 매개값을 검증해서 유효한 값만 데이터로 저장할 수 있기 때문입니다. 이러한 역할을 하는 것이 바로 Setter입니다.

void setSpeed(double speed) {
  // 매개값이 음수인 경우 speed 필드에 0으로 저장하고, 메소드 실행 종료
  if(speed < 0) {
    this.speed = 0;
    return;
  } else {
    this.speed = speed;
  }
}

예제 1

Getter와 Setter 메소드 선언 방법

private 타입 fieldName;

/*Getter
접근제한자 : public
리턴 타입 : 필드타입
메소드 이름 : get + 필드이름(첫문자 대문자)
리턴값 : 필드값
*/

public 리턴 타입 getFieldName(){
  return fieldname;
}


/*Setter
접근제한자 : public
리턴 타입 : void
메소드 이름 : set + 필드이름(첫문자 대문자)
리턴값 : 필드타입
*/
public void setFieldName(타입 fieldName){
  this.fieldName = fieldName;
}

예제 2

private boolean stop;

/*Getter
접근제한자 : public
리턴 타입 : 필드타입
메소드 이름 : is + 필드이름(첫문자 대문자)
리턴값 : 필드값
*/
public boolean isStop() {
  return stop;
}

/*Setter
접근제한자 : public
리턴 타입 : void
메소드 이름 : set + 필드이름(첫문자 대문자)
리턴값 : 필드타입
*/
public void setStop(boolean stop) {
  this.stop = stop;
}

예제 3 Getter와 Setter 메소드 선언

public class Car {
  //필드
  private int speed;
  private boolean stop;

  //생성자

  //메소드
  public int getSpeed() {
    return speed;
  }

  public void setSpeed(int speed) {
    if(speed < 0) {
      this.speed = 0;
      return;
    } else {
      this.speed = speed;
    }
  }

  public void setStop(boolean stop) {
    this.stop = stop;
    this.speed = 0;
  }
}

태그:

카테고리:

업데이트:

댓글남기기