2010-09-30 98 views

回答

11

Math類的方法是靜態的。所以,在做

Math.round(average) 

數學類本身不會改變你所做的 - 它只會返回一個值或作用於你傳遞的值。

所以 - 靜態方法對實用程序很有用。比如像

StringUtils.removeWhitespaceFrom(textContent:String):String 

BrowserUtils.openInNewWindow(url:String):void 

這是非常不尋常的,你會使用一個靜態方法爲別的。不要像'getInstance()'那樣使用靜態來創建Singletons - 而應該考慮依賴注入框架。

3

靜態方法是方法,一個不特定的類(對象)的任何實例,他們是不允許包含此引用的方法,你可以通過類直接訪問它們(而不是對象實例)

2

爲了使你的概念清楚,假設你想知道你的類被實例化了多少次,你將在你的類構造器中使用靜態變量計數器,每次創建對象時。

然後,你必須使用靜態方法來訪問這些數據,否則你可以聲明你的變量public或default,並用類名訪問它,但是違反了OOP原則。這裏是小例子

公共類CAR {

私人靜止無功櫃檯:= 0;

private function CAR(){Counter ++; }

public static function ReturnTotalCarInstances():int { return Counter;爲什麼它在大多數編程語言提供 }

}

靜態變量有自己的利益,多數民衆贊成。計數實例是靜態變量的一小部分。它們在更大的範圍內使用。主要的一點是它被用來在Class的所有對象之間共享全局數據。

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