参考官方示例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并未只读;