2009-10-23 23 views
0
override public function set data(value:object):void { 

super.data = value 

} 

僅當我有一個itemRenderer時才調用此函數,或者我可以在任何其他頁面或組件中重寫此方法以獲取以前的數據。在Flex中設置數據方法

回答

1

在更基本的術語中,您可以覆蓋存在於擴展類中的任何publicprotected函數。這包括公共財產的制定者和吸收者。

上面的代碼實質上是無用的。你基本上想要使用setter和getters,當你想要根據屬性的設置發生其他事情時 - 例如,當你設置itemRendererdata屬性,你想要檢查數據,並且它是否符合某個標準,你想改變渲染器的樣式。

以下是壓倒一切的工作的一個例子 - 什麼工作/什麼不會的工作:

package 
{ 
    public class SomeClass 
    { 
     public var someProp:Object; // can be overridden using setter and/or getter in sub-class 

     private var otherProp:Object; // cannot be accessed or overridden by sub-class 

     public function doSomething():void // can be overridden in sub-class 
     { 
      // ... 
     } 

     protected function doSomethingElse():void // can be overridden using in sub-class 
     { 
      // ... 
     } 

     private function doSomethingPrivate():void // cannot be accessed/called nor overridden in sub-class 
     { 
      // ... 
     } 
    } 
} 


package 
{ 
    public class SomeClassSub extends SomeClass 
    { 
     public var someProp:Object; // throws exception 

     private var otherProp:Object; // this will work 

     public function doSomething():void // throws exception 
     { 
      // ... 
     } 

     override public function doSomething():void // this will work 
     { 
      // ... 
     } 

     protected function doSomethingElse():void // throws exception 
     { 
      // ... 
     } 

     override protected function doSomethingElse():void // this will work 
     { 
      // ... 
     } 

     private function doSomethingPrivate():void // this will work 
     { 
      // ... 
     } 

     override private function doSomethingPrivate():void // throws exception 
     { 
      // ... 
     } 
    } 
} 
0

這被稱爲任何時候有人試圖撥打x.data = foo;您可以手動調用它,但某些組件(如ItemRenderer)具有需要存在的接口定義。 (IDataRenderer)。