[TOC]
使用static关键字实现类范围的变量和方法。
## 静态变量
静态变量(类变量)对于类范围内的状态和常量是有用的:
~~~
class Queue {
static const initialCapacity = 16;
// ···
}
void main() {
assert(Queue.initialCapacity == 16);
}
~~~
静态变量在使用之前不会初始化。
>注意:此页面遵循代码样式规范,对常量名使用小驼峰命名法。
>
## 静态方法
静态方法(类方法)不对实例进行操作,因此无法访问该实例。例如:
~~~
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);
}
~~~
>注意:对于通用或广泛使用的实用程序和功能,考虑使用顶级函数,而不是静态方法。
>
可以使用静态方法作为编译时常量。例如,可以将静态方法作为参数传递给常量构造函数。