2、Dart 基礎語法

參考官方示例java

官方推薦在線編輯器, 本人使用的是visual Studio Codeexpress

一、新建文件 Bicycle.dart編輯器

二、代碼ide

//聲明類
class Bicycle {
  int cadence;
  int speed;
  int gear;
}

/**
 * 一、Dart的main方法是命名main()或(若是須要訪問命令行參數) main(List<String> args)。
 * 二、該main()方法位於頂層。在Dart中,您能夠在類以外定義代碼。變量,函數,getter和setter均可以在類以外生活。
 * 三、原始Java示例使用privateDart 聲明私有實例變量,Dart不使用該聲明
 * 四、 main()自行車」和「自行車」 均未被聲明爲public,由於全部標識符默認都是公共的 Dart沒有爲關鍵字public,private或protected
 * 五、Dart按照慣例使用2個字符的縮進,而不是4個。
 */
void main() {

}

三、構造函數; 給Bicycle類聲明構造函數函數

class Bicycle {
  int cadence;
  int speed;
  int gear;
//構造函數
/**
   * 一、此構造函數沒有正文,在Dart中有效。
   * 二、若是忘記;了無體構造函數末尾的分號(),DartPad會顯示錯誤:「必須提供函數體」。
   * 三、使用this在構造函數中的參數列表是對實例變量的值賦給一個方便快捷。
   */
  Bicycle(this.cadence, this.speed, this.gear);
}

該構造函數的代碼等同於this

Bicycle(int cadence, int speed, int gear) {
  this.cadence = cadence;
  this.speed = speed;
  this.gear = gear;
}

四、實例化Bicycle類並打印google

void main() {
  /**
   * 一、該new關鍵字在Dart 2中成爲可選項。
   * 二、若是您知道變量的值不會改變,則可使用final而不是var。
   */
  var bike = new Bicycle(2, 0, 1);
  print(bike);
}

五、在命令行運行程序命令行

>dart Bicycle.dart3d

打印結果code

六、輸出的內容是類的 toString方法內容, 每一個Dart類都有默認的toString方法;能夠覆蓋該方法,以提供不一樣的輸出; 如

/**
   * 一、該@override註解告訴特地要重寫的成員分析儀(同java中的方法重寫)。若是您未能正確執行覆蓋,分析器會引起錯誤。
   * 二、Dart在指定字符串時支持單引號或雙引號。
   * 三、使用字符串插值將表達式的值放在字符串文字中:${expression}。若是表達式是標識符,則能夠省略大括號:$variableName。
   * 四、使用胖箭頭(=>)表示法縮短單行函數或方法。
   */
  @override
  toString() => 'Bicycle: $speed mph';

重寫執行main方法,結果輸出

七、聲明類的只讀屬性

原始Java示例定義speed爲只讀變量 - 它將其聲明爲私有並僅提供getter。接下來,您將在Dart中提供相同的功能;

要將Dart標識符標記爲私有,請使用下劃線(_)開始其名稱。

如今把speed修改成只讀有屬性 int _speed;

修改後, Bicycle的構造函數直接引用用speed的 地方也要作修改(或者修改成_speed);

構造函數去除 this.speed()或者修改成this._speed

爲_speed添加get方法

/**
   * 一、只讀變量, 若未初始化則值爲null, Dart中全部都是對象,沒有原始數據類型;
   * 二、Dart編譯器對任何帶有下劃線的標識符強制實施隱私。
   * 三、默認狀況下,Dart爲全部公共實例變量提供隱式getter和setter。除非要強制執行只讀或只寫變量,計算或驗證值或在其餘位置更新值,不然無需定義本身的getter / setter。
   */
  int _speed;

吐槽,經試驗 bike._speed = 1; 能夠直接賦值成功;感受只讀聲明有點扯,實時_speed並未只讀;

相關文章
相關標籤/搜索