꾸준히 하고싶은 개발자

Getter 및 Setter 메서드란 무엇인가요? 본문

카테고리 없음

Getter 및 Setter 메서드란 무엇인가요?

프라우스 2024. 5. 30. 20:18

Getter와 Setter는 객체 지향 프로그래밍에서 클래스의 속성에 대한 접근을 제어하는 메서드입니다. 이들은 클래스의 멤버 변수(필드)에 대한 읽기와 쓰기 작업을 수행하는 메서드로, 객체의 데이터를 보호하고 외부에서의 접근을 관리하는 데 사용됩니다.

Getter 메서드

Getter 메서드는 클래스의 속성 값을 반환하는 데 사용됩니다. 주로 클래스 내부의 필드 값을 외부에서 읽을 수 있도록 합니다.

class Person {
  String _name; // 프라이빗 필드

  // 생성자
  Person(this._name);

  // Getter 메서드
  String get name => _name;
}

void main() {
  var person = Person('John');
  print(person.name); // John
}

name은 Getter 메서드로, _name 필드의 값을 반환합니다. Getter 메서드는 get 키워드와 함께 정의되며, 필드 값을 읽기 전용으로 만듭니다.

Setter 메서드

Setter 메서드는 클래스의 속성 값을 설정하는 데 사용됩니다. 주로 클래스 내부의 필드 값을 외부에서 변경할 수 있도록 합니다.

class Person {
  String _name; // 프라이빗 필드

  // 생성자
  Person(this._name);

  // Getter 메서드
  String get name => _name;

  // Setter 메서드
  set name(String newName) {
    _name = newName;
  }
}

void main() {
  var person = Person('John');
  print(person.name); // John

  person.name = 'Doe'; // Setter 메서드 사용
  print(person.name); // Doe
}

name은 Setter 메서드로, _name 필드의 값을 변경합니다. Setter 메서드는 set 키워드와 함께 정의되며, 값을 설정하는 기능을 제공합니다.

Getter와 Setter의 장점

  1. 데이터 캡슐화:
    • Getter와 Setter를 사용하면 클래스 내부의 구현을 외부에 노출하지 않고도 데이터에 접근할 수 있습니다. 이는 데이터의 무결성을 유지하고 클래스의 내부 구현을 숨기는 데 도움이 됩니다.
  2. 유효성 검사:
    • Setter 메서드 내에서 유효성 검사를 수행할 수 있습니다. 예를 들어, 값이 특정 범위 내에 있는지 확인하거나 특정 조건을 만족하는지 확인할 수 있습니다.
  3. 읽기 전용 또는 쓰기 전용 속성:
    • Getter만 제공하여 읽기 전용 속성을 만들거나, Setter만 제공하여 쓰기 전용 속성을 만들 수 있습니다.
class Person {
  String _name;
  int _age;

  Person(this._name, this._age);

  String get name => _name;

  int get age => _age;

  set age(int newAge) {
    if (newAge >= 0 && newAge <= 150) {
      _age = newAge;
    } else {
      print('Invalid age');
    }
  }
}

void main() {
  var person = Person('John', 30);
  print(person.age); // 30

  person.age = 25; // 유효한 나이
  print(person.age); // 25

  person.age = -5; // 유효하지 않은 나이
  // Invalid age 출력
}

age Setter 메서드는 유효성 검사를 수행하여 나이가 0 이상 150 이하인 경우에만 _age 필드를 업데이트합니다. 그렇지 않으면 오류 메시지를 출력합니다.

결론

Getter와 Setter는 클래스의 필드에 대한 접근을 제어하고, 데이터의 무결성을 유지하며, 클래스의 내부 구현을 캡슐화하는 데 중요한 역할을 합니다. 이를 통해 객체 지향 프로그래밍에서 더 안전하고 유지 보수 가능한 코드를 작성할 수 있습니다.