为什么这会在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
答案 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";
}
}
}