본문 바로가기
자기계발/IT

[Flutter/플러터] 다트(Dart) 언어 생성자, 게터, 세터 알아보기

by KTC 2023. 2. 20.

목차

    반응형

    안녕하세요!

    다트 언어의 생성자와 게터, 세터를 알아보겠습니다.

     

    생성자

    • 생성자는 인스턴스화하는 방법을 제공하는 일종의 메서드
    • 다트는 기본 생성자를 제공함, 기본 생성자는 클래스명과 같은 이름의 메서드
    class Person {
      String? name;
      int? age;
    }
    
    void main() {
      var person = Person();	//기본 생성자
    }

     

    • 사용자 정의 생성자를 추가하면 기본 생성자를 사용할 수 없지만 선택 매개변수를 사용하면 Person()로 호출 가능
    class Person {
      String? name;
      int? age;
    
      Person({this.name, this.age});			//생성자
    }
    
    void main() {
      var person = Person();				//가능
      var person2 = Person(name: '홍길동', age: 20);		//가능
    }

     

    게터, 세터

    • 프라이빗 변수에 접근하려면 게터(읽기)와 세터(쓰기) 메서드가 필요
    • 변수 앞에 _ 기호가 없으면 어디에서든 접근할 수 있는 퍼블릭 변수이므로 게터와 세터는 불필요
    • _ 기호가 있는 프라이빗 변수는 클래스 외부에서 접근하려면 게터와 세터 메서드 필요
    //person.dart
    class Person {
      String? name;
      int _age = 10;
    
      int? get age => _age;
    }
    
    
    //main.dart
    import 'person.dart';
    
    void main() {
      var person = Person();
      print(person.age);	//_age 값 출력
    }

     

    • 게터는 프라이빗 변숫값에 변경을 주어 사용할 때에도 유용
    //rectangle.dart
    class Rectangle {
      num _left, _top, _width, _height;
    
      Rectangle(this._left, this._top, this._width, this._height);
    
      num get right => _left + _width;
      set right(num value) => _left = value - _width;
      num get bottom => _top + _height;
      set bottom(num value) => _top = value - _height;
      num get left => _left;
    
    //main.dart
    import 'rectangle.dart';
    
    void main() {
      var rect = Rectangle(5, 5, 5, 5);
    
    
      print(rect.right);  //10
    
      rect.right = 12;
    
      print(rect.left);   //7
    
    }
    반응형