정의
클래스의 인스턴스를 초기화하는 메서드
주로 객체를 생성할 때 필요한 초기 설정을 수행
Dart에서는 오버로딩을 지원하지 않음
대신 함수의 선택적 매개변수, 이름있는 매개변수를 활용하여 유사한 기능 구현이 가능
class Person {
int id;
String name;
late int money; // 나중에 들어옴 or 디폴트 0
String? nickname; // nullable 변수, 있을수도 있고 없을 수도 있는것
// 기본 생성자
Person(this.id, this.name, this.money, this.nickname);
// 이름 있는 생성자
Person.fromMap(Map<String, dynamic> m)
: this.id = m["id"],
this.name = m["name"],
this.money = m["money"],
this.nickname = m["nickname"] ?? "다른이름";
void init() {
if (money == 0) {
for (int i = 0; i < 10; i++) {
money = money + 1;
}
}
}
}
void main() {
var m = {"id": 2, "name": "임꺽정", "money": 0};
Person p2 = Person.fromMap(m)..init();
print(p2.id);
print(p2.name);
print(p2.money);
print(p2.nickname);
}
기본 생성자
- 클래스를 정의하면 기본적으로 아무런 매개변수도 없는 기본 생성자가 제공
- 명시적으로 작성하지 않아도 사용
매개변수를 가진 생성자
- 생성자에 매개변수를 추가하여 객체를 초기화할 때 필요한 값을 전달
이름 있는 생성자
- 클래스 내에서 여러개의 생성자를 정의할 수 있도록 이름 있는 생성자를 사용
- 여러가지 초기화 방법을 제공
초기화 리스트
- 생성자가 본문을 실행하기 전에 인스턴스 변수를 초기화할 수 있는 초기화 리스트를 사용
팩토리 생성자
- 항상 새로운 인스턴스를 생성하지 않고 기존 인스턴스를 반환할 수도 있는 생성자
- 주로 싱글톤 패턴이나 캐싱에 사용
선택적 매개변수
- 매개변수를 정의할 때 중괄호를 사용하여 정의
- 함수를 호출할 때 생락 가능
- 기본값을 지정 가능
- 여러가지 호출 방식을 지원하여 함수를 더 유연하게 사용
- 불필요한 매개변수를 생략하여 함수 호출을 간결
이름 있는 매개변수
- 함수 호출 시 매개변수 이름을 지정하여 값을 전달
- 기본값을 지정 가능
Share article