Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > 使用 ActionScript 設計物件導向程式 > 類別 > 變數 | |||
變數可以用 var 或 const 關鍵字進行宣告。以 var 關鍵字宣告的變數可以在整個 Script 執行期間多次變更其值;以 const 關鍵字宣告的變數稱為「常數」,則僅能指定一次值,若嘗試指定新的值給已初始化的常數,會導致錯誤。如需詳細資訊,請參閱常數。
靜態變數是結合使用 static 關鍵字及 var 或 const 陳述式所宣告的。靜態變數是附加至類別而不是附加至類別實體,在儲存及共用適用於整個物件的類別資訊時很有用。例如,若要保持類別實體化的次數記錄,或者,若要儲存可允許的最大類別實體數目,靜態變數就很適用。
下列範例會建立 totalCount 變數,以追蹤類別實體化次數,也會建立 MAX_NUM 常數,以儲存最大的實體數目。totalCount 和 MAX_NUM 是靜態變數,因為它們所包含的值可套用至整個類別而不是特定的實體。
class StaticVars
{
public static var totalCount:int = 0;
public static const MAX_NUM:uint = 16;
}
在 StaticVars 類別之外的程式碼及其任何子類別都是只能透過類別本身來參考 totalCount 和 MAX_NUM 屬性。例如,下列程式碼可以正確運作:
trace(StaticVars.totalCount); // 輸出:0 trace(StaticVars.MAX_NUM); // 輸出:16
您不能透過類別的實體來存取靜態變數,因此下列程式碼會傳回錯誤:
var myStaticVars:StaticVars = new StaticVars(); trace(myStaticVars.totalCount); // 錯誤 trace(myStaticVars.MAX_NUM); // 錯誤
同時以 static 和 const 關鍵字宣告的變數必須在宣告常數的同時進行初始化,StaticVars 類別的 MAX_NUM 也是一樣。您不能指定值給建構函式或實體方法之內的 MAX_NUM。下列程式碼會產生錯誤,因為它不是初始化靜態常數的有效方式:
// !! 以這種方式初始化靜態常數會產生錯誤
class StaticVars2
{
public static const UNIQUESORT:uint;
function initializeStatic():void
{
UNIQUESORT = 16;
}
}
實體變數包含以 var 和 const 關鍵字而不用 static 關鍵字宣告的屬性。實體變數是附加至類別實體而不是附加至整個類別,在儲存實體特有的值時很有用。例如,Array 類別具有名為 length 的實體屬性,其中儲存 Array 類別之特定實體所保存的陣列元素數目。
實體變數不管是宣告為 var 或 const,都不能在子類別中加以覆寫,但是您可以透過覆寫 getter 和 setter 方法,達到類似於覆寫變數的功能。如需詳細資訊,請參閱Get 和 set 存取子方法。
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000063.html