Java 类不是抽象的,并且不会重写抽象方法问题
我尽力做到了。但我有一个错误信息 “学生不是抽象的,并且不会覆盖Comparable中的抽象方法compareTo(对象) 班级学生扩展人{”Java 类不是抽象的,并且不会重写抽象方法问题,java,Java,我尽力做到了。但我有一个错误信息 “学生不是抽象的,并且不会覆盖Comparable中的抽象方法compareTo(对象) 班级学生扩展人{” 抽象类Person实现可比较{ 私有字符串名称; 公众人物(字符串名称){ this.name=名称; } 公共字符串getName(){ 返回名称; } } 班级学生延伸人{ 私有int-id; 公立学生(字符串名称,整数id){ 超级(姓名); this.id=id; } 公共字符串toString(){ 返回整数.toString(id); } 公
抽象类Person实现可比较{
私有字符串名称;
公众人物(字符串名称){
this.name=名称;
}
公共字符串getName(){
返回名称;
}
}
班级学生延伸人{
私有int-id;
公立学生(字符串名称,整数id){
超级(姓名);
this.id=id;
}
公共字符串toString(){
返回整数.toString(id);
}
公共int getId(){
返回此.id;
}
@凌驾
公共int比较(学生s){
if(this.ids.getId()){
返回1;
}
返回0;
}
}
@覆盖
公共int比较(学生s){
if(this.ids.getId()){
返回1;
}
返回0;
}
这就是我认为有问题的地方…正如@Andreas已经解释的那样,让
学生实现可比的,而不是人
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
abstract class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Student extends Person implements Comparable<Student> {
private int id;
public Student(String name, int id) {
super(name);
this.id = id;
}
public String toString() {
return Integer.toString(id);
}
public int getId() {
return this.id;
}
@Override
public int compareTo(Student o) {
return Integer.compare(this.id, o.id);
}
}
你的Comparable
是原始泛型。不要使用原始泛型。请参阅:当你无法比较不同子类的两个人时,为什么要将实现Comparable
放在Person
上?例如,比较学生
和老师
会抛出ClassCastException
——Make学生代码>是否执行实现可比较的
,而不是人
。
@Override
public int compareTo(Student s) {
if (this.id < s.getId()) {
return -1;
}else if (this.id > s.getId()) {
return 1;
}
return 0;
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
abstract class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
class Student extends Person implements Comparable<Student> {
private int id;
public Student(String name, int id) {
super(name);
this.id = id;
}
public String toString() {
return Integer.toString(id);
}
public int getId() {
return this.id;
}
@Override
public int compareTo(Student o) {
return Integer.compare(this.id, o.id);
}
}
public class Main {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
list.add(new Student("Abc", 321));
list.add(new Student("Xyz", 12));
list.add(new Student("Mnp", 123));
Collections.sort(list);
System.out.println(list);
}
}
[12, 123, 321]