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キーワードが必要です。ただし、 の場合ObjecttoString()は動的であり、実行時にアタッチされるため、オーバーライドする必要はありません。代わりに、実装は開発者によって提供されるため、実行時に作成されません。独自のtoString():String実装を作成するだけです。

于 2013-08-21T00:35:41.703 に答える
0

Foo はクラスを拡張していません。したがって、オーバーライドするメソッドはありません。関数定義から override キーワードを削除するだけでコンパイルできます

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

toString()は、多くの ActionScript クラスの拡張元であるObjectクラスのメソッドであることを付け加えておきます。ただし、Object を拡張しても、toString() メソッドをオーバーライドする必要はありません。ドキュメントから:

Object のサブクラスでこのメソッドを再定義するには、override キーワードを使用しないでください。

このような:

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