參考官方示例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並未只讀;