
위 코드에서
class Burger {
//String? name;
final String name; //변경 final 추가
Burger(this.name); // final로 인해 반드시 생성될때 값을 받아야함
}
코드가 변경됐다고 봅시다.
이렇게 되면 “main( )”을 실행했을 때 오류가 발생합니다.
CheeseBurger가 생성될 때까지 Burger의 name 값이 초기화 되지 않았기 때문입니다.
오류를 해결하기 위해서는
class CheeseBurger extends Burger {
CheeseBurger(String name) : super(name) {
}
}
이니셜라이저를 사용해서 CheeseBurger의 내부 스택이 실행되기 전에
부모 Burger에게 값을 전달할 수 있게 되어서 오류가 해결됩니다.
전체코드
class Burger {
final String name;
Burger(this.name);
}
class CheeseBurger extends Burger {
CheeseBurger(String name) : super(name) {
}
}
void main(){
CheeseBurger cb = CheeseBurger("치즈Burger");
print(cb.name);
}
Share article