6

为什么这会在 Flash Builder 中产生错误?:

package {
  public class Foo {
    override public function toString():String {
      return "Foo";
    }
  }
}

选项卡完成表明这可用于覆盖...

错误信息:

Multiple markers at this line:
-public
-1020: Method marked override must override another method.
-overridesObject.toString
4

2 回答 2

8

删除方法overridetoString()

关于方法有一个流行的误解toString(),即:如果要提供超类方法的自定义实现,override则需要关键字。但如果Object,toString()是动态的并且在运行时附加,则不需要覆盖。相反,实现将由开发人员提供,因此不会在运行时创建。只需要编写自己的toString():String实现即可。

于 2013-08-21T00:35:41.703 回答
0

Foo 没有扩展一个类;所以因此没有方法可以覆盖。只需从函数定义中删除 override 关键字,它应该可以编译

package {
  public class Foo {
    public function toString():String {
      return "Foo";
    }
  }
}

我要补充一点,toString()Object类的一个方法,许多 ActionScript 类都从该方法扩展而来。但是,即使扩展 Object,也不需要重写 toString() 方法。从文档:

要在 Object 的子类中重新定义此方法,请不要使用 override 关键字。

像这样:

package {
  public class Foo extends Object {
    public function toString():String {
      return "Foo";
    }
  }
}
于 2013-08-21T00:35:18.820 回答