覆盖Object.toString错误

时间:2013-08-21 00:29:49

标签: flex flex4 flash-builder override tostring

为什么这会在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

2 个答案:

答案 0 :(得分:9)

删除override方法上的toString()

关于toString()方法存在一种流行的误解,即:如果想要提供超类方法的自定义实现,则需要override关键字。但是在Object的情况下,toString()是动态的并且在运行时附加,否定了重写的必要性。相反,实现由开发人员提供,因此不会在运行时创建。只需要编写自己的toString():String实现。

答案 1 :(得分:0)

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

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

我将补充说toString()是许多ActionScript类扩展的Object类的方法。但是,即使扩展Object,也不需要覆盖toString()方法。来自文档:

  

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

像这样:

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