2010-09-30 16 views

Antwort

11

Die Methoden der Math-Klasse sind statisch. Also, tun

Math.round(average) 

die Mathematik selbst ist unverändert von dem, was Sie getan haben - es gibt nur einen Wert oder wirkt auf den Wert, den Sie übergeben.

So - statische Methoden sind nützlich für Dienstprogramme. Dinge wie

StringUtils.removeWhitespaceFrom(textContent:String):String 

oder

BrowserUtils.openInNewWindow(url:String):void 

Es ist sehr ungewöhnlich, dass Sie eine statische Methode für etwas anderes verwenden würde. Verwenden Sie keine Statiken wie 'getInstance()', um Singletons zu erstellen - schauen Sie stattdessen in ein Framework für die Abhängigkeitsinjektion.

3

statische Methoden sind Methoden, die eine nicht spezifisch für jede Instanz einer Klasse (Objekt) sie sind Methoden, die nicht erlaubt sind diese Verweise zu enthalten und Sie können sie durch die Klasse direkt zugreifen (nicht die Objektinstanzen)

2

Um Ihr Konzept zu verdeutlichen: Wenn Sie wissen möchten, wie oft Ihre Klasse instanziiert wurde, verwenden Sie jedes Mal, wenn Ihr Objekt erstellt wird, einen statischen Variablenzähler in Ihrem Klassenbaustein.

Dann müssen Sie die statische Methode verwenden, um auf diese Daten zuzugreifen. Andernfalls können Sie Ihre Variable als public oder default deklarieren und mit Klassennamen darauf zugreifen, was jedoch gegen die OOP-Prinzipien verstößt. hier ist das kleine Beispiel

public class CAR {

private static var Counter: int = 0;

private Funktion CAR() {Counter ++; }

öffentliche statische Funktion ReturnTotalCarInstances(): int { Rückgabezähler; }

}

Statische Variablen haben ihren Nutzen ist, warum es in den meisten Programmiersprachen zur Verfügung gestellt. Das Zählen von Instanzen ist die geringe Verwendung von statischen Variablen. Sie werden in viel größerem Umfang verwendet. Der Hauptpunkt ist, dass Daten global unter allen Objekten der Klasse ausgetauscht werden.

4

Statische Methoden können als überladene Konstruktoren verwendet werden. ActionScript hat keine Funktionsüberladung, daher schreibe ich manchmal etwas wie:

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; 
    } 
} 
Verwandte Themen