2010-09-30 4 views

ответ

11

Методы класса Math являются статическими. Так, в этом

Math.round(average) 

Класс Math сам не меняется тем, что вы сделали - это только возвращает значение или действует на значении вы проходите.

So - статические методы полезны для утилит. Такие вещи, как

StringUtils.removeWhitespaceFrom(textContent:String):String 

или

BrowserUtils.openInNewWindow(url:String):void 

Это очень необычно, что вы будете использовать статический метод для чего-нибудь еще. Не используйте статику типа getInstance() для создания Singletons - вместо этого загляните в структуру для инъекции зависимостей.

3

статические методы являются методами, что не относится к какой-либо экземпляра класса (объекта), они являются методы, которые не могут содержать эти ссылки и вы можете получить к ним доступ через класс непосредственно (а не экземпляры объектов)

2

Чтобы сделать вашу концепцию понятной, предположим, что если вы хотите знать, сколько раз ваш класс был создан, вы будете использовать статический счетчик переменных в своем классе constuctor, каждый раз, когда ваш объект будет создан.

Затем вы должны использовать статический метод для доступа к этим данным, иначе вы можете объявить свою переменную общедоступной или по умолчанию и получить доступ к ней с именем класса, но это нарушает принципы ООП. вот маленький пример

общественного класса CAR {

частный статический счетчик вар: INT = 0;

частная функция CAR() {Counter ++; }

общественная статическая функция ReturnTotalCarInstances(): int { return Counter; }

}

Статические переменные имеют их пользу вот почему это предусмотрено в большинстве языков программирования. Счетные экземпляры - это небольшое использование статической переменной. Они используются в гораздо большем объеме. Главное, что он используется для обмена данными по всему миру среди всех объектов класса.

4

Статические методы могут использоваться как перегруженные конструкторы. ActionScript не имеет функции перегрузки, поэтому иногда я пишу что-то вроде:

public class Foo { 
    public static function fromBar(bar:Bar):Foo { 
     var foo:Foo = new Foo(); 
     ... //initializing foo object from bar 
     return foo; 
    } 

    public static function fromBaz(baz:Baz):Foo { 
     var foo:Foo = new Foo(); 
     ... //initializing foo object from baz 
     return foo; 
    } 
} 
Смежные вопросы