Dart:修飾符 static final const的區(qū)別

static:

用于修飾成員變量,這個(gè)變量是屬于類的,而不是屬于對(duì)象的,除此之外沒有其他別的含義了,static修飾符的使用方式和Java類似。 static變量直到運(yùn)行期被使用時(shí)才會(huì)實(shí)例化。

final:

用于修飾變量,表示單賦值(single-assignment),使用final修飾的變量必須進(jìn)行初始化,一旦被賦值之后,不能夠再次被賦值,否則編譯會(huì)報(bào)錯(cuò)。跟java的區(qū)別是:final不能用來修飾類和方法。

const:

表示對(duì)象的狀態(tài)完全可以在編譯期間確定,并且完全是不可變的。

  • const變量不會(huì)在內(nèi)存中重復(fù)創(chuàng)建,如果表達(dá)式被調(diào)用了多次,則重用之前創(chuàng)建好的常量。
  • const構(gòu)造函數(shù)的前提是成員變量必須都是用final修飾的。const單例多例可以如下實(shí)現(xiàn):
class Man {

  final int age;
  const Man({this.age});
//  static const m = const Man(age: 7);
}

main() {

//  const Man m0 = new Man(age: 7); error
  const Man m1 = const Man(age: 19);
  const Man m2 = const Man(age: 20);
  const Man m3 = const Man(age: 19);

  print(m1 == m2); //false
  print(m1 == m3); //true
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容