본문 바로가기
Dart/Dart Programming language

[초급] Dart 객체 지향 프로그래밍 기초: 생성자와 소멸자

by Maccrey Coding 2024. 9. 5.
728x90
반응형

 

1. 생성자 (Constructor)

생성자의 역할

생성자는 객체가 생성될 때 호출되어 객체의 초기 상태를 설정하는 메서드입니다. 생성자는 클래스 이름과 동일하며, 매개변수를 통해 객체를 초기화하는 데 사용됩니다.

기본 생성자

기본 생성자는 파라미터가 없는 생성자로, 객체를 기본 상태로 초기화합니다.

class Person {
  String name;
  int age;

  // 기본 생성자
  Person() {
    name = 'Unknown';
    age = 0;
  }

  void greet() {
    print('Hello, my name is $name and I am $age years old.');
  }
}

위의 코드에서는 Person 클래스에 기본 생성자가 정의되어 있으며, name과 age를 기본값으로 초기화합니다.

매개변수가 있는 생성자

매개변수가 있는 생성자는 객체 생성 시 값을 전달받아 객체를 초기화할 수 있습니다.

class Person {
  String name;
  int age;

  // 매개변수가 있는 생성자
  Person(this.name, this.age);

  void greet() {
    print('Hello, my name is $name and I am $age years old.');
  }
}

여기서는 Person 클래스의 생성자가 name과 age를 매개변수로 받아 초기화합니다.

네임드 생성자

네임드 생성자는 생성자의 이름을 추가로 정의하여 클래스 내에서 여러 생성자를 구현할 수 있습니다.

class Person {
  String name;
  int age;

  // 기본 생성자
  Person(this.name, this.age);

  // 네임드 생성자
  Person.young(String name) : name = name, age = 18;

  void greet() {
    print('Hello, my name is $name and I am $age years old.');
  }
}

위 코드에서 Person.young는 나이가 18세인 젊은 사람을 생성하는 네임드 생성자입니다.

2. 소멸자 (Destructor)

Dart에서의 소멸자

Dart는 직접적인 소멸자 개념을 제공하지 않지만, 객체가 더 이상 사용되지 않을 때 메모리를 자동으로 관리하는 Garbage Collection(가비지 컬렉션) 시스템이 있습니다. 가비지 컬렉션은 메모리에서 객체를 자동으로 제거하며, 이를 통해 메모리 누수를 방지합니다.

Dart에서 자원 해제하기

Dart에서는 객체가 더 이상 필요 없을 때 자원을 명시적으로 해제할 필요가 있을 경우, 해당 객체의 메서드를 호출하여 자원 해제를 관리할 수 있습니다. 보통 자원 해제를 위한 메서드는 dispose()와 같은 명칭을 사용합니다.

class Resource {
  // 자원을 초기화하는 생성자
  Resource() {
    print('Resource allocated');
  }

  // 자원을 해제하는 메서드
  void dispose() {
    print('Resource disposed');
  }
}

void main() {
  Resource resource = Resource();
  // 자원을 사용한 후 명시적으로 해제
  resource.dispose();
}

3. 요약

  • 생성자: 객체가 생성될 때 호출되며, 객체의 초기 상태를 설정하는 데 사용됩니다. 기본 생성자, 매개변수가 있는 생성자, 네임드 생성자가 있습니다.
  • 소멸자: Dart에서는 직접적인 소멸자 개념이 없으며, 가비지 컬렉션이 자동으로 메모리를 관리합니다. 자원 해제가 필요한 경우, 객체의 메서드를 통해 자원을 명시적으로 해제할 수 있습니다.

이해를 돕기 위해 객체 지향 프로그래밍에서 생성자와 소멸자의 역할과 Dart에서의 관리 방법을 다뤘습니다. 이 글이 Dart에서의 객체 생명 주기를 이해하는 데 도움이 되길 바랍니다.

구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

728x90
반응형