[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);
}
~~~
>注意:對于通用或廣泛使用的實用程序和功能,考慮使用頂級函數,而不是靜態方法。
>
可以使用靜態方法作為編譯時常量。例如,可以將靜態方法作為參數傳遞給常量構造函數。