类实现某个接口其类属性就变了么

a2712012 2014-07-17 01:50:01
java核心技术中有个例子
class Employee implements Comparable<Employee>
{
}
,当未实现该接口时,程序进行到Arrays.sort(obj)时就报错:employment不能转换为comparable对象,实现了之后就不报错了,难道是实现了某个接口其类属性就变成了接口的属性了,请高手解释下其中的道理?
...全文
1436 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灯光环 2014-07-17
  • 打赏
  • 举报
回复
引用 7 楼 a2712012 的回复:
谢谢光环了,我就是对这个报错(Employee cannot be cast to java.lang.Comparable)有所困惑,为什么实现了之后就成了呢,难道实现了接口后,Employee 就can be cast to java.lang.Comparable了?
sort(T[] a, Comparator<? super T> c) Sorts the specified array of objects according to the order induced by the specified comparator. 官方API定义了这个参数是必须实现Comparator接口的。
  • 打赏
  • 举报
回复
sort函数要求要排序的每个对象都是“可以相互比较的”,而且都要实现Comparable接口。 换句话说回来,让你自己写程序,你如何比较两个对象的升降顺序?
a2712012 2014-07-17
  • 打赏
  • 举报
回复
谢谢光环了,我就是对这个报错(Employee cannot be cast to java.lang.Comparable)有所困惑,为什么实现了之后就成了呢,难道实现了接口后,Employee 就can be cast to java.lang.Comparable了?
a2712012 2014-07-17
  • 打赏
  • 举报
回复
谢谢斑竹大大,不能简单的将接口理解为实现类的父类吧
小灯光环 2014-07-17
  • 打赏
  • 举报
回复
引用 3 楼 a2712012 的回复:
[quote=引用 1 楼 wlwlwlwl015 的回复:] 如果要通过Arrays.sort给对象排序的话,那么对象必须要实现Comparable,并重写里面的compareTo方法,很明显么,你比较对象肯定需要定义一个比较的规则,这个和接口属性没关系,是这个方法决定的。
接口相当于该类的父类么?[/quote] 当然不是,接口可以理解为一个标准、协议性的东西,在Java一个类可以实现多个接口,但一个类只能继承一个类,概念比较抽象,结合代码理解一下。
霜之哀伤 2014-07-17
  • 打赏
  • 举报
回复
这个就叫多态 实现一个接口以后,这个类的实例都相当于具有了这个接口的特性,一个类可以同时实现多个接口 你是一个人,可能是个妹子,或者汉子,你上学的话就又是一个学生 然后,比如买火车票的时候,要求只有学生能买学生票,但并不管你是妹子还是汉子,这个就叫面向接口的编程 同样的,上面的例子Arrays.sort()方法就要求里面的元素都是Comparable的,至于你到底是A类实现的还是B类实现的,它不管
a2712012 2014-07-17
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
如果要通过Arrays.sort给对象排序的话,那么对象必须要实现Comparable,并重写里面的compareTo方法,很明显么,你比较对象肯定需要定义一个比较的规则,这个和接口属性没关系,是这个方法决定的。
接口相当于该类的父类么?
a2712012 2014-07-17
  • 打赏
  • 举报
回复
接口相当于该类的父类么?
小灯光环 2014-07-17
  • 打赏
  • 举报
回复
如果要通过Arrays.sort给对象排序的话,那么对象必须要实现Comparable,并重写里面的compareTo方法,很明显么,你比较对象肯定需要定义一个比较的规则,这个和接口属性没关系,是这个方法决定的。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧