Статическая переменная или метод являются общими для всех экземпляров класса. Это довольно приличное определение, но на самом деле, возможно, не так ясно, как пример ...
Так что в классе Foo
возможно, вы захотите иметь статическую переменную fooCounter
, чтобы отслеживать, сколько экземпляров Foo
было создано. (Сейчас мы просто проигнорируем безопасность потоков).
public class Foo {
private static var fooCounter:int = 0;
public function Foo() {
super();
fooCounter++;
}
public static function howManyFoos():int {
return fooCounter;
}
}
Таким образом, каждый раз, когда вы делаете new Foo()
в приведенном выше примере, счетчик увеличивается. Поэтому в любое время, если мы хотим узнать, сколько Foo
, мы не запрашиваем экземпляр значения счетчика, мы запрашиваем класс Foo
, поскольку эта информация является "статической" и применяется к весь Foo
класс.
var one:Foo = new Foo();
var two:Foo = new Foo();
trace("we have this many Foos: " + Foo.howManyFoos()); // should return 2