У меня есть абстрактный класс Person и сопоставимый интерфейс, который также используется для какой-то другой части программы. В настоящее время у меня есть метод compareTo () в Person. Когда я пытаюсь скомпилировать, я получаю:
The type Student must implement the inherited abstract method
Comparable<Person>.compareTo(Person, Person)
Что именно я должен сделать? Я не хочу реализовывать этот метод ни в одном из подклассов, потому что мне нужен этот метод для всех из них, студентов, преподавателей, профессоров и т. Д. ... Есть ли лучший способ сделать это?
Интерфейс:
interface Comparable<Element> {
public int compareTo(Element nodeA, Element nodeB);
}
Абстрактный класс Персона:
abstract class Person implements Comparable<Person> {
protected String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
public String toString() {
return name;
}
public int compareTo(Person personB) {
int comp = this.name.compareTo(personB.getName());
return comp;
}
}
И ученик класса
class Student extends Person implements Comparable<Person> {
private int id;
public Student(String name, int id) {
super(name);
this.id = id;
}
public int getID() {
return id;
}
public void setID(int newID) {
id = newID;
}
public String toString() {
return id + ", " + name;
}
}