2009-05-20 129 views
1

如果我有2個類,第一個擴展第二個類,第二個類如何從第一個類調用靜態函數?AS3類功能範圍


package p1 { 
    class a { 
     static function a1() { 
      //do soemthing 
     } 
    } 

    class b extends a { 
     static function b1() { 
      //do something else 
     } 
    } 
} 

a.a1(); // this works 
b.a1(); // this doesn't work 
b.b1(); //this works 
+0

該方法是靜態的。 – respectTheCode 2009-05-20 16:37:56

+0

啊......我以爲a&b是A和B類的實例。我不確定你是否可以繼承靜態函數... – quoo 2009-05-20 17:12:18

回答

2

當「B擴展A」時 - 實際上不同於「B類具有A的所有方法和屬性」。不是類,但類B的對象實現了在類A中定義的所有屬性和方法。當您調用靜態方法或屬性時 - 您處理類但不處理對象(它看起來與命名空間的使用非常相似)。

ADDED: 解決您的任務的唯一方法是重寫類B中的a1(args),並在內部調用super.a1(args)... 1個代碼字符串。但是在我看來,如果無法避免這種用法,那麼您就會遇到軟件架構師問題。

-1

使用超級調用父類的方法。

super.b1(); 

編輯:好吧,看你在寫什麼,我認爲你需要設置公共範圍或保護。

+0

b1在子類b中,如果它擴展了a,它應該繼承a功能並且能夠正常地呼叫它們。 – quoo 2009-05-20 16:16:30