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.
'Dart > Dart Programming language' 카테고리의 다른 글
[초급] Dart 객체 지향 프로그래밍 기초: 접근 제어자: public, private, protected (0) | 2024.09.05 |
---|---|
[초급] Dart 객체 지향 프로그래밍 기초: 상속 및 다형성 (0) | 2024.09.05 |
[초급] 객체 지향 프로그래밍 기초/클래스 및 객체의 개념 (0) | 2024.09.05 |
[초급] Dart 기본 문법/주석 작성하기: 코드의 가독성을 높이는 방법 (0) | 2024.09.02 |
[초급] Dart 기본 문법/함수 정의 및 호출하기: 기초부터 심화까지 (0) | 2024.09.02 |