| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2397 人关注过本帖
标题:未覆盖compareTo抽象方法是什么样的错误??
只看楼主 加入收藏
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
未覆盖compareTo抽象方法是什么样的错误??
错误提示是 Name不是抽象的,并且未覆盖java.中的抽象方法compareTo<java.lang.Object>
Class Name implements Comparable
^
程序代码:
import java.util.*;
class Name implements Comparable
{  public String firstName,lastName;
   public Name(String firstName,String lastName)
   {  this.firstName=firstName;
      this.lastName=lastName;
    }
    public int compareTo(Name o)
    {  int lastCmp=(o.lastName);
       return(lastCmp!=0?lastCmp:(o.firstName));
     }
    public String toString()
    {  return firstName+" "+lastName;
     }
}
public class NameSort
{   public static void main(String args[])
     {  Name nameArray[]=
         {   new Name("John","Lennon"),
             new Name("Karl","Marx"),
             new Name("Groucho","Marx"),
             new Name("Oscar","Grouch")};
         Arrays.sort(nameArray);
         for(int i=0;i<nameArray.length;i++)
               System.out.println(nameArray[i].toString());
      }
}

2013-03-06 20:26
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
有人指点一下吗?
刚学java,在线等~~

新手发言,请多指教。
2013-03-06 20:41
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:10 
Comparable 接口 需要实现这个方法compareTo<java.lang.Object>  注意传入参数为一个,参数类型为Object
而你实现的是public int compareTo(Name o)

解决方法一,将o参数类型写成Object,同时注意传入非Name的处理逻辑。
解决方法二,标识Comparable接口只传入Name类型
例如
程序代码:
import java.util.*;
class Name implements Comparable<Name>
{  public String firstName,lastName;
   public Name(String firstName,String lastName)
   {  this.firstName=firstName;
      this.lastName=lastName;
    }
    public int compareTo(Name o)
    {  int lastCmp=(o.lastName);
       return(lastCmp!=0?lastCmp:(o.firstName));
     }
    public String toString()
    {  return firstName+" "+lastName;
     }
}
public class NameSort
{   public static void main(String args[])
     {  Name nameArray[]=
         {   new Name("John","Lennon"),
             new Name("Karl","Marx"),
             new Name("Groucho","Marx"),
             new Name("Oscar","Grouch")};
         Arrays.sort(nameArray);
         for(int i=0;i<nameArray.length;i++)
               System.out.println(nameArray[i].toString());
      }
}

2013-03-06 20:49
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
楼上正解,谢谢了

新手发言,请多指教。
2013-03-06 20:53
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
另外想多问一句,Object不是对象嘛
那我的Name也是啊,为什么不能?难道Name不是对象??

新手发言,请多指教。
2013-03-06 20:55
wangjialong
Rank: 2
等 级:论坛游民
帖 子:77
专家分:95
注 册:2012-11-8
收藏
得分:0 
结贴结的早了

新手发言,请多指教。
2013-03-06 21:01
wangweislk
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2013-3-6
收藏
得分:0 
回复 5楼 wangjialong
你的compareTo()方法是重写了Comparable中的同名方法,方法签名要一样
2013-03-06 22:00
shellingford
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:19
帖 子:228
专家分:1348
注 册:2010-8-9
收藏
得分:0 
回复 5楼 wangjialong
实现接口需要实现一样的方法,从返回值、方法名、参数个数和对应参数类型  你的参数类型是name 而接口参数类型是Object  所以你的方法不是实现了接口方法,所以编译器提示你错误
2013-03-07 09:41
快速回复:未覆盖compareTo抽象方法是什么样的错误??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030855 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved