2012-02-08 7 views
0

を設定し、次の点を考慮サブクラスがオーバーライドせずにスーパーのメソッドを拡張することは可能ですか?

- SomeFilter extends Filter 
- Filter implements Runnable 
- Filter provides run() implementation 

SomeFilterはそれがsuperrun()と、もう少しだ使うようにする方法はありますか? run()内部

ロジックは

- MyFilter extends Filter 
- MyOtherFilter extends Filter 

のための十分な汎用的であるが、それはスーパーのrun()ます使用したいし、それが自分の具体的なケースだ処理するコードのいくつかの余分な行を追加すること、SomeFilterのためではないでしょうか?

その他SomeFilterrun()を上書きする方法はありますか?

+2

(スーパーを使用して)親クラスのメソッドを呼び出す方法を知っていると仮定すると、なぜ "オーバーライド以外の方法"を探していますか? – eternaln00b

答えて

5

はい。 SomeFilterの内部:

@Override 
public void run(){ 
    super.run(); 
    // custom run code 

} 
+0

これがRunnableインターフェースから来るのと同じ "実行"の場合は、それをプライベートにすることはできません。 – eternaln00b

+1

何かが足りない。 (1)Filterは 'java.lang.Runnable'を実装しています。 (2) 'java.lang.Runnable'はpublic runメソッドを持っています。 'super.run'はどうやって見えませんか? – emory