AS3类功能范围

时间:2009-05-20 16:07:38

标签: flex actionscript-3

如果我有2个类而第一个扩展第二个类,那么第二个类如何从第一个类调用静态函数?


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

2 个答案:

答案 0 :(得分:2)

当“B延伸A”时 - 这实际上与“B类具有A的所有方法和属性”不同。不是类,但是类B的对象实现了在类A中定义的所有属性和方法。当你调用静态方法或属性时 - 你处理的是类而不是对象(它看起来与名称空间的使用非常相似)。

增加: 解决你的任务的唯一方法是覆盖类B中的a1(args)并在... 1字符串代码中调用super.a1(args)。但在我看来,如果不可能避免这种用法,你就会遇到软件架构师的问题。

答案 1 :(得分:-1)

使用super调用父方法。

super.b1();

编辑:好的,看看你写的是什么,我认为你需要将a1的范围设置为公开或受保护。