public class Person implements Comparable{
private final int id;
private String name;
private int age;

public Person(int id,String name,int age){
this.id = id;
this.name = name;
this.age = age;
}
public int getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;

public int getAge(){
return age;
}
public String toString(){
return "Id: " + id + "\tName: " + name + "\tAge: " + age; 
}
@Override
public int compareTo(Object o){
Person p = (Person)o;
return this.id - p.id;
}
@Override
public boolean equals(Object o){
boolean flag = false;
if(o instanceof Person){
if(this.id == ((Person)o).id)
flag = true;
}
return false;
}
}编译的时候提示未能覆盖,求助高人帮我改写。

解决方案 »

  1.   

    为什么 我的JDK 会编译错误呢?
    我在CMD 下也是错误的?天啊  谁来救救我
      

  2.   

    你把这种标签都去掉@Override 对就是这种。
      

  3.   


    把 @Override  这些东东 全部 删除掉 应该 就可以了
      

  4.   

    @Override 
    是在1.6以后才能够识别的,IDE自动添加的
    如果LZ的JDK没有更新的话可以更新下,不然就删除好了
      

  5.   

    我的是1.5的
    如果没有这个@Override 东西 为什么他会显示没有覆盖父类呢?
      

  6.   

    @Override 是 JDK 1.5 开始内置的一个标记 Annotation,全称是:java.lang.Override,用于
    标注哪些方法是重写的。也就是说标记了 @Override 的方法,必须在父类中存在这个方法。@Override 只能标注 Object 类或者是其他父类中的方法。由于 Comparable 是个接口,必须得实现,因此不能采用 @Override 来标注。
      

  7.   

    java.lang 
    注释类型 Override--------------------------------------------------------------------------------@Target(value=METHOD)
    @Retention(value=SOURCE)
    public @interface Override表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,则编译器会生成一条错误消息。这是1.5JDK 的解释 ,我明明覆盖了哇,而且视频上也是运行成功的。
      

  8.   

    我记得对override的解释不同的JDK版本是不同的,但是具体的我忘记了.
    对于类的继承,override的解释没有差别,就在接口上,有的版本对实现的接口的方法也叫override,但是有的版本则不称为override,楼主可以换换版本试下就知道了