私はサブクラスのメソッドをオーバーライドしようとしていますが、私は階層内の上位のスーパークラスにアクセスする必要があると思います。だから私はsuper.super.methodName()のような何かをしたいと思います。ちなみに、私が解決しようとしている実際の問題は、以下の私のコードによって説明されなければならないflex/as3のスーパークラスのスーパークラスにアクセスすることは可能ですか?
:
public class A extends UIComponent{
override protected function keyDownHandler(event:KeyboardEvent):void{
super.keyDownHandler(event);
if(event.keyCode==46)
remove();
}
}
public class B extends A{
override protected function keyDownHandler(event:KeyboardEvent):void{
if(event.keyCode==46 && removeable==true)
remove();
else
super.super.keyDownHandler(event);
}
}
私はクラスAのKeyDownHandlerメソッドを使用する場合は、あなたが(その削除が表示されます)が関係なく、呼ばれています。しかし、ドキュメントでは、UIComponentをサブクラス化するたびにUIComponent.keyDownHandlerを呼び出す必要があると述べています。もちろん、これは最初のサブクラスでは機能しますが、そのサブクラスのサブクラスでは機能しません。
私は {...}(これはBである)場合、私は のようなものを持つにすべての機能を置くことができることを実現するが、それはハックする私には思えます。
から取られたコンテンツにクラスAで定義されているよう
new B().keyDownHandler(event)
のようなものを呼び出すと、今keyDownHandlerを呼び出す原因となります私はこれが本当にすぐに混乱するかもしれないと思います。これが組み込みのFlex UIComponentメソッドの一部をオーバーライドする場合は、いくつかの利点がありますが、かなり正直なところ、スーパーチェーン "。このコードを他の人と共有しようとしている場合は、それぞれのケースに固有のメソッド名を使用することをお勧めします。それ以外の場合は、ちょっとした挑戦のように見えます:) – bigp