본문 바로가기
개발/Dart

Dart 기본 - 19. class 생성자, this 키워드 의미 및 사용방법

by 왼하루 2023. 2. 12.
반응형

Dart에서 클래스는 어플리케이션에서 객체를 다루는 데 기본적인 역할을 합니다. 생성자는 클래스의 인스턴스를 생성하는 데 사용되며, 객체의 상태를 초기화하는데 특히 중요한 역할을 합니다.

 

 

생성자 정의

Dart에서 클래스 생성자는 클래스 이름과 동일한 이름으로 정의합니다. 생성자는 클래스의 새로운 인스턴스를 생성할 때 호출되며, 클래스의 각 인스턴스는 생성자의 매개변수를 통해 고유한 속성을 가질 수 있습니다.

 

 

기본 생성자

기본 생성자는 객체를 생성할 때 호출할 수 있는 파라미터가 없는 생성자입니다. 다음은 기본 생성자를 포함하는 클래스 예제입니다.

class Point {
  int x;
  int y;

//생성자
  Point() {
    x = 0;
    y = 0;
  }
}

 

 

매개 변수가 있는 사용자 정의 생성자

매개 변수가 있는 생성자는 객체를 생성할 때 필요한 파라미터를 제공할 수 있는 생성자입니다. 다음은 매개변수 있는 생성자를 포함하는 클래스 예제입니다.

class Point {
  late final String name;
  late int age;

  Point(String name, int age) {
    this.name = name;
    this.age = age;
  }
}

 

Dart에서는 클래스에서 생성자를 사용할 때, this 키워드를 사용하여 클래스의 인스턴스 변수에 접근할 수 있습니다. 생성자의 매개변수와 클래스의 멤버 변수 이름이 같은 경우에는, 매개변수 이름 앞에 this.을 붙여서 구분할 수 있습니다.

 

위 코드에서 late는 변수의 값을 나중에 받아오는 것을 의미합니다. 객체 선언과 출력하는 예시는 아래와 같습니다.

class Point {
  late final String name;
  late int age;
  
  // 생성자
  Point(String name, int age) {
    this.name = name;
    this.age = age;
  }
  
  // 메소드
  void sayHi() {
    print("my name is $name, my age is $age");
  }
}

void main() {
  // 객체 생성
  var obj = Point("john",12);
  obj.sayHi();
}

 

객체에서 생성과 동시에 argument를 전달하고, 이를 생성자를 통해 초기화 해준 후, 매개 함수를 실행한 결과입니다.

출력 결과

 

 

보다 간단하게 생성자 정의

late 키워드를 삭제하고 보다 간단하게 생성자를 정의할 수 있습니다.

class Point {
  final String name;
  int age;
  
  // 간단한 생성자 정의방법
  Point(this.name, this.age);
  
  void sayHi() {
    print("my name is $name, my age is $age");
  }
}

void main() {
  var obj = Point("john",12);
  obj.sayHi();
}

 

생성자 파라미터에 this 키워드를 사용하여 클래스의 인스턴스 변수에 바로 접근할 수 있습니다.

 

 

마무리

Dart에서 클래스 생성자는 클래스의 인스턴스를 생성하는 데 사용되며, 객체의 상태를 초기화하는데 중요한 역할을 합니다. this 키워드를 사용하여 생성자의 매개변수와 클래스의 멤버 변수를 구분할 수 있으며, 객체의 상태를 초기화하는 데 필요한 정보를 전달할 수 있습니다.

 

Dart에서는 기본 생성자와 사용자 정의 생성자를 모두 제공하며, 사용자 정의 생성자는 객체 생성 시에 필요한 매개변수를 정의할 수 있습니다. 객체를 생성하는 데 필요한 정보를 정의하여, 더욱 효율적인 코드를 작성할 수 있습니다.

 

오늘도 행복한 코딩생활 되시길 바라겠습니다.

 

감사합니다.

댓글