glogg можно было также рассмотреть для различного использования:
Протест (сообщаемый Simon Tewsi в комментарии , февраль 2013)
Один протест - имеет две поисковых функции,
Main Search
иQuick Find
.
более низкий, который я принимаю,Quick Find
, по крайней мере, порядок величины медленнее, чем верхний, который быстр.
static
указывает, что переменная, константа или метод принадлежит классу, а не экземплярам класса. Доступ к статической переменной, функции или константе можно получить без создания экземпляра класса, например SomeClass.staticVar
. Они не наследуются никаким подклассом, и только классы (без интерфейсов) могут иметь статические члены.
Статическая функция
не может получить доступ к нестатическим членам (переменным, константам или функциям) класса, и вы не можете использовать this
или super
внутри статического функция. Вот простой пример.
public class SomeClass
{
private var s:String;
public static constant i:Number;
public static var j:Number = 10;
public static function getJ():Number
{
return SomeClass.j;
}
public static function getSomeString():String
{
return "someString";
}
}
В TestStatic к статическим переменным и функциям можно обращаться без создания экземпляра SomeClass.
public class TestStaic
{
public function TestStaic():void
{
trace(SomeClass.j); // prints 10
trace(SomeClass.getSomeString()); //prints "someString"
SomeClass.j++;
trace(SomeClass.j); //prints 11
}
}
Статическая переменная или метод используется всеми экземплярами класса. Это довольно приличное определение, но на самом деле оно может быть не таким ясным, как пример ...
Итак, в классе Foo
, возможно, вы ' d хотите иметь статическую переменную 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