final, const 둘 다 한번 선언하면 값을 변경할 수 없는 상수 but
final : 런타인 값 지정해도 된다
const : 컴파일 되는 순간에 값이 지정되야 한다.
※ final은 값을 무조건 초기화 해야한다!
초기화를 안 해주면 오류가 난다!class Animal{ final String name; Animal(String name); } void main(){ Animal a1 = new Animal("강아지"); print(a1.name); } //Final field 'name' is not initialized.
※final은 런타임 시 초기화 된다!
※ 클래스에서 final 사용해서 인스턴스를 생성하면 상수로 설정 가능하다! => const (x)
※ 컴파일 시 초기화된다.
※ 동일한 객체는 값 메모리를 공유한다.class Animal{ final String name; const Animal(this.name); } void main(){ Animal a1 = const Animal("강아지"); Animal a2 = const Animal("강아지"); print(a1.hashCode); print(a2.hashCode); }
"강아지"라는 동일한 객체를 공유함으로 같은 값을 출력한다. 이 기능이 flutter에서 아주 중요한 역할을 한단다.