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