Actionscript 3 ActionScript 3覆盖方法+;增加能见度

Actionscript 3 ActionScript 3覆盖方法+;增加能见度,actionscript-3,flash,methods,overriding,Actionscript 3,Flash,Methods,Overriding,当我扩展一个类时,我想重写方法并改变它们的可访问性,就像受保护的方法在某个类中应该是公共的一样。当我编译时,它说:“不兼容的覆盖”。我不能减少也不能增加能见度 减少是没有意义的,我也不需要它,但我能够提高Java中方法的可见性。为什么不在ActionScript3中 public class OldClass { protected function doStuff() : void {} } public class NewClass extends OldClass {

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

减少是没有意义的,我也不需要它,但我能够提高Java中方法的可见性。为什么不在ActionScript3中

public class OldClass
{
    protected function doStuff() : void
    {}
}
public class NewClass extends OldClass
{
    override public function doStuff() : void
    {}
}

我做错什么了吗?

不,你没有做错什么。这就是语言的工作原理。从(增加强调)开始:

静态方法不是继承的,不能被重写。但是,实例方法由子类继承,只要满足以下两个条件,就可以重写:

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

  • 重写方法的参数数必须与基类方法的参数数相同

  • 重写方法参数必须与基类方法中的参数具有相同的数据类型批注

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


ActionScript3是一种混乱的语言。我只是注意到我不能改变一个精灵的宽度和高度,除非我在精灵图形上画了一些东西。这太荒谬了。但是谢谢你的信息!OT,但这是mini me的预期行为。空的
Sprite
的宽度应始终为零。获取
精灵的宽度
返回其所有子项的宽度(在应用转换后)。设置
精灵的宽度
只需更改应用的缩放比例。你知道,在开始使用Actionscript-3之前,我有自己的Java精灵,我仍然更喜欢我的精灵,因为我可以添加一个新的非零维不可见子精灵,并将其用于碰撞检测。总的来说效果不错。正如-3从我这里拿走了“精灵”的名字-。-@Bitterblue AS3没有从你这里拿走“精灵”的名字,你所要做的就是定义你自己的自定义名称空间@因为在我所知道的地方,水下流动严重。最后我做到了。但是编译器和组织导入总是用这两个类来困扰我。MSV更好地处理类和命名空间名称。