2012-03-16 9 views
0

Java 1.7の基本クラスをオーバーライドする際にいくつか問題があります。Javaのオーバーライド - 関数を正しく上書きできません。

私の目標は、f()メソッドをオーバーライドして、プログラムが基本クラスのものとは異なる関数を使って反復することです。

私の問題は、関数の名前が同じで、同じ戻り値の型と同じパラメータを持っていても、関数をオーバーライドするように見えないことです。

Here's the base file

And here's the file that's trying to override the base file

現在のコードは動作しますが、私はすべて初期値と終了値を設定することができ、私は最初のを上書きするために、第2のファイルに関数法を取得することはできません。

+6

提供されたリンクをフォローする代わりに、ここにコードを記載してください。 –

答えて

4

静的関数を無効にすることはできません。

3

これはオーバーライドではなく(インスタンスメソッド)、これはhiding(静的メソッド)です。

1

前述のとおり、静的メソッドはオーバーライドできません。静的でないメソッドを作成し、オブジェクトインスタンスを使用して計算を行うことを検討してください。

このようなものはRunge5になります。

public static void main(String argv[]) { 
    Runge2 r = new Runge5(); 
    r.doCalculations(); 
} 

doCalculations()あなたはmain()に持っていたコードが含まれます。

おそらく最高のデザインではありませんが、問題が解決します。

+0

助けてくれてありがとうが、私はまだあなたの提案を実装する上で少し不安です。 私は新しいメソッドdoCalculations()をメインにまとめて、runge5クラスの中からオーバーライドしますか? – user1275115

+0

'f()'はあなたが意図した通りに上書きすることができます。 doCalculations()は同じままです。 –

関連する問題