Dart에서 클래스를 만들 때, 그 클래스의 객체가 생성될 때 어떻게 변수들을 초기화할지 결정해야 합니다. 여기에는 두 가지 주요한 방법이 있습니다.
이 방식은 생성자의 "본문"에서 변수를 초기화합니다. 즉, 객체가 만들어진 후에 변수에 값을 할당합니다.
class Player {
late final String name;
late final int xp;
Player(String name, int xp) {
this.name = name;
this.xp = xp;
}
void sayHello() {
print("Hi my name is ${name}");
}
}
위 코드에서 late
키워드는 "이 변수는 나중에 초기화될 거야"라고 Dart에게 알려주는 역할을 합니다. final
은 "한 번 값을 할당하면 그 값을 바꿀 수 없다"는 의미입니다. 그래서 late final
은 "이 변수는 나중에 초기화될 거고, 한 번 초기화되면 그 값이 바뀌지 않는다"라는 의미가 됩니다.
이 방식은 객체가 만들어지기 전에 변수를 초기화합니다. 즉, 객체가 완전히 생성되기 전에 값을 할당합니다.
class Player {
final String name;
final int xp;
Player(String name, int xp) :
this.name = name,
this.xp = xp;
void sayHello() {
print("Hi my name is ${name}");
}
}
위 코드에서 생성자의 초기화 리스트를 사용하면 final
변수들을 초기화할 수 있습니다. this.name
과 this.xp
는 객체의 name
과 xp
변수에 각각 생성자로 받은 name
과 xp
값을 할당합니다. 이렇게 하면 객체가 완전히 만들어지기 전에 final
변수들을 초기화할 수 있어서 late
키워드가 필요 없습니다.
요약하자면:
final
변수를 초기화하려면 late
키워드를 사용해야 합니다.final
변수도 초기화할 수 있고, late
키워드가 필요 없습니다.