Я работаю над общей реализацией Генетического алгоритма.Я пытаюсь расширить конкретный объект Individual для задачи о ранце из абстрактного класса 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
Что такоеЯ здесь скучаю?
Заранее спасибо.