[앱개발-flutter] getter 와 setter / dart 문법

도톨이·2024년 2월 2일
0

앱 개발-flutter

목록 보기
12/29

Getter & Setter

Dart 언어에서 클래스의 private 속성에 안전하게 접근하고, 해당 속성을 조작할 수 있는 방법을 제공합니다. 이를 위해 getter와 setter 메소드를 사용할 수 있습니다. 이들은 특별한 종류의 메소드로, 객체의 속성을 읽거나 변경할 때 사용됩니다. getter는 속성 값을 읽을 때, setter는 속성 값을 설정할 때 사용됩니다.

Getter 사용하기

getter는 특정 속성의 값을 반환하는 메소드입니다. Dart에서는 다음과 같이 정의할 수 있습니다.

class Circle {
  double _radius; // Private 속성
  
  Circle(this._radius);
  
  // Getter for radius
  double get radius => _radius;
}

위 예제에서 _radius는 private 속성이므로, 클래스 외부에서 직접 접근할 수 없습니다. 그러나 radius라는 getter를 통해 간접적으로 _radius 값에 접근할 수 있게 됩니다

Setter 사용하기

setter는 특정 속성에 값을 할당할 때 사용하는 메소드입니다. setter를 사용하면, 값을 설정하기 전에 추가적인 검증 로직을 실행할 수 있습니다.


  // Setter for radius
  set radius(double value) {
    if (value <= 0) {
      throw Exception('Radius cannot be negative or zero.');
    }
    _radius = value;
  }
}

이 예제에서 radius 속성에 대한 setter를 정의했습니다. 이 setter는 새로운 반지름 값이 음수이거나 0이 아닌지 확인합니다. 이러한 검증을 통해, Circle 객체가 유효한 상태를 유지하도록 도와줍니다.

전체코드

class Circle {
  double _radius;

  Circle(this._radius);

  // Getter for radius
  double get radius => _radius;

  // Setter for radius
  set radius(double value) {
    if (value <= 0) {
      throw Exception('반지름은 음수나 0이 될 수 없습니다..');
    }
    _radius = value;
  }
}

Getter Setter 호출코드


다른 언어에서는 getter와 setter를 호출할 때, 명시적으로 메소드 이름을 호출해야 합니다. 예를 들어, Java에서는 getRadius()나 setRadius(value)와 같은 방식으로 getter와 setter를 호출합니다. 반면, Dart에서는 이러한 getter와 setter를 속성처럼 직접 접근하는 것처럼 사용할 수 있습니다.

아래 코드를 보면 알 수 있듯이 Dart에서는 이 getter와 setter를 마치 일반 속성에 접근하듯이 사용할 수 있습니다.

void main() {
  var circle = Circle(5.0);

  print('초기 반지름: ${circle.radius}'); // Getter를 사용하여 반지름 값 출력

  circle.radius = 10.0; // Setter를 사용하여 반지름 값을 10.0으로 변경
  print('업데이트된 반지름: ${circle.radius}');

  try {
    circle.radius = -5.0; // Setter에서 예외 발생 예정
  } catch (e) {
    print(e); // 예외 처리 및 출력
  }

}

실행결과

profile
Computer Engineering

0개의 댓글

관련 채용 정보