2012-07-04 71 views
2

說我有一個變量在一般Global.as文件是這樣的:從其他類重寫變量

public static const test:String = "testString"; 

而在另一個文件我要重寫這個變量。像下面也許是:

File1.as

override var test:String = "testStringUpdated"; 

Ofcourse這個心不是工作。有誰知道如何做到這一點?

它實際上可能與overrideoverride這樣使用?或者它只是爲了覆蓋功能?

在此先感謝。

+0

您不能更改常數的值。你爲什麼使用它?它不一定是靜態的。然後你可以在任何地方輕鬆地改變它的值:Global.test =「new string」; – Gio

回答

2

通常你不會'重寫'變量;只需在子類中更改它們的值(構造函數對此是個好地方)。

public function File1() 
{ 
    test = "testStringUpdated"; 
} 

至於從字面上覆蓋,你可以覆蓋setters和getters。

只需設置你的變量作爲基類的setter /吸氣劑組合,如:

class Base 
{ 
    private var _test:String = "testString"; 

    public function get test():String 
    { 
     return _test; 
    } 

    public function set test(value:String):void 
    { 
     _test = value; 
    } 
} 
在子類(文件1)

然後,您可以改變將如何獲得test的值,例如:

class File1 extends Base 
{ 
    override public function get test():String 
    { 
     return super.test + "Updated"; // testStringUpdated 
    } 
} 
+0

您的方法工作完美,我有一個globalConfig類和一個localConfig類,我只是從globalConfig類擴展並更改了值。我還有一個問題,因爲我讓localConfig從globalConfig擴展,爲什麼我不能通過localConfig來配置globalConfig?假設我在我的globalConfig中有一個變量測試,我不能使用localConfig.test?儘管它從globalConfig擴展而來? – vincent

+0

@vincent在這種情況下,您不要使用'localConfig.test'。當'localConfig'從'globalConfig'繼承時,'test'屬於'localConfig',就像它屬於'globalConfig'一樣。這意味着你只需通過這兩個類中的'test'來訪問該屬性。 – Marty