当我扩展一个类时,我想覆盖方法并改变它们的可访问性,就像受保护的方法应该在某个类中是公共的。当我编译它时说:“不兼容的覆盖”。我无法减少,也无法提高知名度。
减少没有意义,我不需要它,但我能够增加Java中的方法可见性。为什么不在ActionScript 3中?
public class OldClass
{
protected function doStuff() : void
{}
}
public class NewClass extends OldClass
{
override public function doStuff() : void
{}
}
我做错了吗?
答案 0 :(得分:5)
不,你没有做错任何事。这就是语言的运作方式。从documentation(强调添加):
静态方法不会被继承,也不能被覆盖。但是,实例方法由子类继承,只要满足以下两个条件,就可以覆盖它们:
...
覆盖方法必须具有与基类方法相同的访问控制级别。标记为内部的方法与没有访问控制说明符的方法具有相同的访问控制级别。
覆盖方法必须与基类方法具有相同数量的参数。
覆盖方法参数必须与基类方法中的参数具有相同的数据类型注释。
override方法必须与基类方法具有相同的返回类型。