ActionScript 3覆盖方法+提高可见性

Bit*_*lue 2 flash methods overriding actionscript-3

当我扩展一个类时,我想覆盖方法并改变它们的可访问性,就像受保护的方法应该在某个类中是公共的.当我编译它时说:"不兼容的覆盖".我不能减少也不能增加能见度.

减少是没有意义的,我不需要它,但我能够增加 Java中的方法可见性.为什么不在ActionScript 3中?

public class OldClass
{
    protected function doStuff() : void
    {}
}
public class NewClass extends OldClass
{
    override public function doStuff() : void
    {}
}
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么 ?

Jam*_*ice 5

不,你没有做错任何事.这就是语言的运作方式.从文档(重点添加):

静态方法不是继承的,不能被覆盖.但是,实例方法由子类继承,只要满足以下两个条件,就可以覆盖它们:

  • ...

  • override方法必须具有与基类方法相同级别的访问控制.标记为内部的方法与没有访问控制说明符的方法具有相同的访问控制级别.

  • override方法必须具有与基类方法相同数量的参数.

  • 覆盖方法参数必须具有与基类方法中的参数相同的数据类型注释.

  • override方法必须与基类方法具有相同的返回类型.