1 定义构造函数: 无方法体的构造函数是合法的, 例如
等同于
另外实例化一个对象 java中要用new, 而dart2 中new 是可选的, 例如
* dart 单双引号都可以用来制定字符,
* 使用${expression}在字符串中插入表达式,如果是标识符,可以省略{ }, 以上'Bicycle: $speed mph'等同于 'Bicycle: ${speed} mph'
* 使用 =>来代替return的写法,实现单行缩进效果,代码简洁有效
* Dart编译器会设置 以下划线开头的标识符为私有
* 未初始化变量(包括numbers类型) 默认值都是null。
* 默认下,Dart为所有的public实例变量提供了getters 和 setters 。不需要定义getters 和 setters就可以随处使用变量,更新变量。除非你想指定变量的只读或者只写,才需要重新定义getters 和 setters。
2 使用可选参数替换重载 (Dart不支持重载)
* this.origin、this.width、 this.height 使用简写技巧在构造函数的声明中为实例变量赋初始值。
* this.origin、this.width、 this.height 都是可选命名参数。命名参数都闭包于大括号中 ({})。
* 其中 this.origin = const Point(0, 0)为origin实例变量指定了默认值——Point(0,0)。指定的默认值必须是编译时常量。 该构造函数为三个实例变量都提供默认值
3 创建一个工厂
*Dart 支持抽象( abstract)类 classes。
* 在一个文件中可定义多个类。
* 方式1:创建一个顶级函数
通过在顶层添加方法(类的外层),来实现一个工厂作为顶层方法, 如
* 方式2:创建一个工厂构造方法
* 在xxx抽象类中添加工厂的构造方法:
4 实现接口:Dart语言不包含interface关键字,因为每个类都隐式地定义了一个接口。