关于接口的实现 在Thinking in Java中,讲到对象的比较。其中一种方法是实现Comparator接口的。但是Comparator接口有两个方法,equals()和compare(),但是一般只实现compare()方法。实现接口的时候难道可以挑着实现其方法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然不是了,必须把接口把接口的method()全部实现! 当然,接口是都要实现的,要不就变成抽象类了,呵呵你所说的那个equals(Object o),是Object的,已经有实现了,要你去实现他,是因为在做compare()的时候就是用这个比较的,所以你重写一下它是对的。 我分开粘一下代码吧,首先是Comparator接口public interface Comparator { int compare(Object o1, Object o2); boolean equals(Object obj);}然后是试验代码class TestComparator implements Comparator{ public int compare( Object o1, Object o2 ) { if ( ((TestCollection)o1).getSequence() < ((TestCollection)o2).getSequence() ) return -1 ; else if (((TestCollection)o1).getSequence()==((TestCollection)o2).getSequence()) return 0 ; return 1 ; }}很显然,TestComparator没有实现Comparator的全部方法,但这段代码没问题,编译通过并可执行why??????????????????难道接口的也有根,也是Object吗 java和C++不同,java中所有的类都直接或者间接继承自java.lang.Object类Object类里已经实现了 boolean equals(Object obj); 方法,所以你的TestComparator类实际上已经从Object类里继承了equals()方法,当然Object类里的equals()方法只比较两个引用是不是指向同一个对象,你的TestComparator类可以覆盖Object类里的equals()方法,这样写public boolean equals(Object obj) { return compare(this, obj) == 0;} 你的TestComparator隐含继承了Object的equals方法,于是这个方法就被当成了Comparator接口equals方法的实现。 时间日期输出的问题 紧急求救: 如何实现窗口中的组件大小随其窗口大小的改变而改变? 算法题:100分,给出任意长度数字字符串,求所有不重复的组合 各位高手帮帮忙拉,小弟学的是偏软的,今天遇到点问题帮忙解决下 小弟新手,请高手指教 点击按钮,播放音乐 java 第8章补充题目 怎么能把一台服务器的文件上传到另外一台服务器(难) 关于weblogic6.0的license.愿意奉上所有的分数。 什么地方有JDK下呢??应该怎么用呢?什么JAVA工具对一个初学者好呢?? 小女子求帮助,谢谢~ 写文件操作为什么在LINUX和WINDOWS下的结果会不一样?!!?
你所说的那个equals(Object o),是Object的,已经有实现了,
要你去实现他,是因为在做compare()的时候就是用这个比较的,
所以你重写一下它是对的。
public interface Comparator {
int compare(Object o1, Object o2);
boolean equals(Object obj);
}然后是试验代码
class TestComparator implements Comparator
{
public int compare( Object o1, Object o2 )
{
if ( ((TestCollection)o1).getSequence() < ((TestCollection)o2).getSequence() )
return -1 ;
else if (((TestCollection)o1).getSequence()==((TestCollection)o2).getSequence())
return 0 ;
return 1 ;
}
}
很显然,TestComparator没有实现Comparator的全部方法,但这段代码没问题,编译通过并可执行
why??????????????????难道接口的也有根,也是Object吗
Object类里已经实现了 boolean equals(Object obj); 方法,所以你的TestComparator类实际上已经从Object类里继承了equals()方法,当然Object类里的equals()方法只比较两个引用是不是指向同一个对象,你的TestComparator类可以覆盖Object类里的equals()方法,这样写public boolean equals(Object obj) {
return compare(this, obj) == 0;
}