Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类不是抽象的,并且不会重写抽象方法问题_Java - Fatal编程技术网

Java 类不是抽象的,并且不会重写抽象方法问题

Java 类不是抽象的,并且不会重写抽象方法问题,java,Java,我尽力做到了。但我有一个错误信息 “学生不是抽象的,并且不会覆盖Comparable中的抽象方法compareTo(对象) 班级学生扩展人{” 抽象类Person实现可比较{ 私有字符串名称; 公众人物(字符串名称){ this.name=名称; } 公共字符串getName(){ 返回名称; } } 班级学生延伸人{ 私有int-id; 公立学生(字符串名称,整数id){ 超级(姓名); this.id=id; } 公共字符串toString(){ 返回整数.toString(id); } 公

我尽力做到了。但我有一个错误信息 “学生不是抽象的,并且不会覆盖Comparable中的抽象方法compareTo(对象) 班级学生扩展人{”

抽象类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]