类变量和方法
实现类范围的变量和方法使用 static 关键字。
静态变量
对于类级别的状态,静态变量(类变量)是非常有用的:
class Queue {
static const initialCapacity = 16;
// ···
}
void main() {
assert(Queue.initialCapacity == 16);
}
只到它们被使用的时候静态变量才会初始化。
代码准守风格推荐指南 中的命名规则, 使用 lowerCamelCase 来命名常量。
静态方法
静态方法(类方法)不能在实例上使用,因此它们不能访问 this 。 例如:
import 'dart:math';
class Point {
num x, y;
Point(this.x, this.y);
static num distanceBetween(Point a, Point b) {
var dx = a.x - b.x;
var dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);
}
}
void main() {
var a = Point(2, 2);
var b = Point(4, 4);
var distance = Point.distanceBetween(a, b);
assert(2.8 < distance && distance < 2.9);
print(distance);
}
提示: 对于常见或广泛使用的工具和函数, 应该考虑使用顶级函数而不是静态方法。
静态函数可以当做编译时常量使用。 例如,可以将静态方法作为参数传递给常量构造函数。