[OSAM] DART 언어 기초(11) final vs const

hello_hidi·2021년 7월 23일
0

[국소아] DART

목록 보기
11/16
post-thumbnail

> final vs const

final, const 둘 다 한번 선언하면 값을 변경할 수 없는 상수 but
final : 런타인 값 지정해도 된다
const : 컴파일 되는 순간에 값이 지정되야 한다.

> final의 특이점

※ 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)

> const의 특이점

※ 컴파일 시 초기화된다.
※ 동일한 객체는 값 메모리를 공유한다.

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에서 아주 중요한 역할을 한단다.

profile
안뇽희디

0개의 댓글