[解決済み] クラスが抽象化されておらず、スーパークラスの抽象化メソッドをオーバーライドしていない
2022-02-14 18:18:42
質問
Genetic Algorithmの汎用実装に取り組んでいます。 ナップザック問題のための特定の個体を、抽象クラスIndividualから拡張しようとしています。
package GenericGA;
public abstract class Individual {
private double fitness;
private double probability;
public double getFitness() {
return fitness;
}
public double getProbability() {
return probability;
}
public void updateProb(double totalFitness){
probability = fitness/totalFitness;
}
abstract void updateFitness();
abstract Individual crossover(Individual partner);
abstract void mutate(double mutationRate);
}
これは拡張クラスです
package GenericGA.SpecificImplementations;
import GenericGA.Individual;
public class KnapsackIndividual extends Individual {
void updateFitness(){
}
Individual crossover(Individual partner){
return null;
}
void mutate(double mutationRate){
}
public static void main(String[] args){
System.out.println("Hello");
}
}
intellijを使っていてエラーが出るので、IDEの問題かもしれないと思い、javacでコンパイルしても同じエラーになります。
GenericGA.SpecificImplementations.KnapsackIndividual is not abstract and does not override abstract method mutate(double) in GenericGA.Individual
スペルミスはなく、シグネチャも正しいです。エラーを出しているmutateメソッドを削除すると、他の抽象メソッドでもエラーが発生します。
さらに、メソッドの上で@Overrideを使用すると、次のようになります。
Method does not override method from its superclass
何が足りないのでしょうか?
よろしくお願いします。
どのように解決するのですか?
アブストラクトのようです
mutate
メソッドは、デフォルトのアクセス (パッケージのプライベート) を持つため、サブクラスからは見えません。
KnapsackIndividual
サブクラスは別のパッケージ内にあります。
を変更します。
abstract
メソッドに変更します。
protected abstract void mutate(double mutationRate);
を作成し、それに応じてオーバーライドメソッドを変更します。
@Override
protected void mutate(double mutationRate){
}
関連
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] EqualsメソッドがオーバーライドされたときにGetHashCodeをオーバーライドすることが重要な理由は何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] 抽象クラスはコンストラクタを持つことができますか?
-
[解決済み] 抽象的なクラスをインスタンス化することはできますか?
-
[解決済み] Pythonにおける抽象クラスとインターフェースの違い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】Javaの".class期待値"
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】宣言されたパッケージが期待されるパッケージと一致しない ""
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり