본문 바로가기
Dart, Flutter for App

Dart - final, const, & static

by Oliver J 2023. 12. 3.
반응형

Dart 언어에서도 final과 const 키워드로 타입을 지정할 수 있습니다. 하지만 final이나 const 로 지정한 타입의 변수는 값을 오직 한 번만 할당이 가능합니다. 사용하는 방법에 있어서 차이가 있습니다.

 

  • final과 const의 차이점
    • final은 런타임 시점에서 값이 저장되고, const 는 컴파일 시점에서 값이 저장됩니다. 
      • 컴파일 과정 : 프로그래밍 언어가 기계어로 번역되어 실행되는 과정
      • 런타임 과정 : 컴파일 된 프로그램이 실행되는 과정
    • 인스턴스 변수는 final로 설정될 수 있지만, const는 될 수 없습니다. 
    • const 키워드는 상수 변수 선언할 때 뿐만 아니라, 상수 값을 만드는 생성자를 선언할 수도 있습니다. 

상수값 생성자에 const 선언 방법

  • 정적 멤버 static
    • static으로 선언을 하면 메서드나 변수는 바로 메모리에 올라가게 되고, 이는 이미 메모리에 올라가 있기에 클래스를 인스턴스화할 필요 없이 바로 사용이 가능합니다. 그리고 클래스가 인스턴스화 했을 때와 별도의 메모리 공간에 올라가 있게 되므로, 클래스 내부의 static 메서드나 변수라고 할지라도 구별되어 사용해야 합니다.

static 사용방법 1

 

위의 사진과 같이 static 을 선언한 상수를 호출할 때에는 클래스명.정적멤버(Person.ethnic 가능)로 호출이 가능하지만, 다른 메모리 공간에 올라가 있기 때문에 클래스를 인스턴스화 한 person 으로는 접근을 할 수 없습니다.(person.ethnic 접근불가) 

반응형

static 사용방법 2

또한, 클래스 내부에 static으로 선언된 메서드의 경우라 할지라도 static으로 선언되지 않은 클래스의 멤버변수에 접근을 할 수가 없습니다. static메서드의 경우 static으로 선언된 멤버 변수만 접근이 가능합니다. 

728x90
반응형