Java 代码中,使用了重载构造函数的方法,该方法在 Java 中很普遍,重载的构造函数和之前的构造函数具有相同的方法名,但是在方法的参数个数或者参数类型上有些许不同。Dart 并不支持构造函数的重载,而采用了构造方法使用可选类型参数
import 'dart:math';
class Rectangle {
int width;
int height;
Point origin;
// 这个构造方法使用了可选类型参数。
Rectangle({this.origin = const Point(0, 0), this.width = 0, this.height = 0});
// this.origin, this.width 和 this.height 使用了 Dart 提供的简便方法来直接对类中的实例变量进行赋值。
// this.origin, this.width 和 this.height 嵌套在闭合的花括号中 ({}) ,用来表示它们是可选的命名参数。
// this.origin = const Point(0, 0) 这样的代码表明给实例变量 origin 提供了默认的值 Point(0,0),默认值必须是在编译器就可以确定的常量。上述代码中的构造方法为三个实例变量都提供了默认参数。
@override
String toString() =>
'Origin: point: (${origin.x}, ${origin.y}), width: $width, height: $height';
}
main() {
print(Rectangle(origin: const Point(10, 20), width: 100, height: 200));
print(Rectangle(origin: const Point(10, 10)));
print(Rectangle(width: 200));
print(Rectangle());
}