Getter와 Setter

훈나무·2023년 6월 1일
0

dart

목록 보기
8/8
post-thumbnail

dart에도 다른 언어와 비슷하게 getter와 setter 그리고 public 과 private가 존재합니다.

public, private

_로 시작하면 private이 되고, 기본적으로는 모두 public입니다.
대표적으로 statefulWidget이 있습니다.

class MyWidget extends StatefulWidget {
  const MyWidget({super.key});

  
  State<MyWidget> createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}

위와 같은 위젯에서, MyWidget은 public으로 어디서든 사용가능하지만, _MyWidgetState는 이 파일내에서만 사용이 가능합니다.

getter & setter

private 변수인 _name은 직접 접근이 불가능하지만, public인 getter와 setter를 통해서 접근이 가능해집니다.

class Person{
	String _name; // private로 외부에서 접근불가
    String get name => _name;
    set name(String name) => _name = name;
}

이러한 class를 사용할 때는 다음과 같이 사용할 수 있습니다.

main(){
	Person person = Person();
    person.name = 'test User'; // setter 사용
    print(person.name); // getter 사용
}

위와 같은 상황에서는 getter와 setter의 필요성이 크게 느껴지지 않습니다. 하지만, 예외처리나 복잡한 변수인 경우 유용하게 사용할 수 있습니다. 예를 들어, name은 10글자 이하로만 변경할 수 있도록 하면,

class Person{
	String _name; // private로 외부에서 접근불가
    String get name => _name;
    set name(String name) => (name.length>15) ? _name = 'too long' : _name = name ;
}

이 처럼, 예외처리를 할 수 있습니다.

profile
프론트엔드 개발자 입니다

0개의 댓글