Hyd*_*cat 3 oop syntax constructor class dart
我正在阅读关于课程的dartlang.org资源,他们注意到以下结构:
import 'dart:math';
class Point {
final num x;
final num y;
final num distanceFromOrigin;
Point(x, y)
: x = x,
y = y,
distanceFromOrigin = sqrt(pow(x, 2) + pow(y, 2));
}
Run Code Online (Sandbox Code Playgroud)
我不太明白的是Point构造函数中的":"以及为什么/何时应该使用它?
它启动"初始化列表".
如果你有类似Point课程中的最终字段,那么有不同的方法来初始化它们.
class Point {
final num x = 3;
...
}
class Point {
final num x;
constructor(this.x);
}
class Point {
final num x;
constructor(num x) : this.x = x * 3;
}
Run Code Online (Sandbox Code Playgroud)
这不行
class Point {
final num x = 3;
constructor(num x) {
this.x = x * 3;
}
}
Run Code Online (Sandbox Code Playgroud)
因为无法从构造函数中修改最终字段.
初始化程序列出了一种解决此限制的方法,同时仍符合对象初始化顺序的保证.它在构造函数体之前执行.这是一种检查或修改(指定默认值)传递参数的方法,然后将它们分配给最终字段并进行一些计算.
使用this在初始化列表中只允许指定的属性,但不能读取它们,以防止访问尚未初始化属性.
对超级构造函数的调用也在初始化列表中完成,通常应该是列表中的最后一次调用.
class MyPoint extends Point {
constructor(num x) : super(x);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |