###継承や抽象クラスの使い方が曖昧なので教えていただきたいです.
非線形方程式(Newton法,Secant法など)で自分用のmathlib
のようなものを作っている途中です.
Java
1public abstract class Equation{ 2 public abstract double f(double x); 3 public abstract double df(double x); 4 … 5}
のようなEquationクラス(abstract)を,
Java
1public class NewtonsMethod extends Equation { 2 double x = 1; // 初期値 3 public static void solve() { 4 for (int i = 0; i <= 10000; i++) { 5 x = x - f(x) / df(x); // ニュートン法の反復式 6 if (Math.abs(f(x)) < 10e-14) { // 収束判定条件 7 break; 8 } 9 } 10 } 11 12 13} 14
のようなNewtonsMethodクラス
に継承させるとき,
Java
1public class Main extends NewtonsMethod{ 2 // メソッドのオーバーライド 3 double f(double x){ 4 return Math.pow(Math.E, x) - 2 * x - 1; // f(x) = e^x-2x-1 5 } 6 double df(double x){ 7 return Math.pow(Math.E, x) - 2; // f'(x) = e^x-2 8 } 9 public static void main(String[] args){ 10 double solution = solve(); 11 System.out.print(solution); 12 } 13}
のようなMainクラスで解を出力させたいのですが,
型 Equation の非 static メソッド f(double) を static 参照することはできません 型 Equation の非 static メソッド df(double) を static 参照することはできません
というようなエラーが出てしまいます.
よって,
Java
1public abstract class Equation{ 2 public static abstract double f(double x); 3 public static abstract double df(double x); 4 … 5}
のように変更したいのですが,
型 Equation の 抽象メソッド f は public または protected の可視性修飾子のどちらか 1 つのみをセットできます
のようなエラーが出てしまいます.
どこを改善すればよいのでしょうか.回答よろしくお願いいたします.
(数学的な知識ではなくJavaの知識の問題かと思われます.)

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/29 10:44