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并未只读;

相关文章
相关标签/搜索