黑马程序员技术交流社区

标题: 匿名内部类是不是要重写接口的所有抽象方法? [打印本页]

作者: 暮雨微凉    时间: 2016-9-24 21:38
标题: 匿名内部类是不是要重写接口的所有抽象方法?
匿名内部类是不是要重写接口的所有抽象方法?拿这个怎么解释呢?
创建一个TreeSet集合:
TreeSet<Integer> ts = new TreeSet<Integer>(new Comparator<Integer>() {
        public int compare(Integer s1,Integer s2) {
                int num = s2 - s1;
                return num > 0 ? 1 : num;
        }
});

查API  Comparator类里有两个抽象方法,却只重写了一个

public interface Comparator<T> {

    int compare(T o1, T o2);

    boolean equals(Object obj);



求大神解释解释呗.....

作者: pdog    时间: 2016-9-24 23:51
因为新建的匿名内部类里面 默认继承了Object的equals方法 。

看上去是没有重写,其实默认是有的

另外再想想,还有哪些方法也是可以从Object类继承的。以后看见就知道了
作者: 暮雨微凉    时间: 2016-9-25 00:35
pdog 发表于 2016-9-24 23:51
因为新建的匿名内部类里面 默认继承了Object的equals方法 。

看上去是没有重写,其实默认是有的

嗯嗯  谢谢层主,有点理解了
作者: 读书可以当饭吃    时间: 2016-9-25 11:00
匿名内部类继承Object,里面自带equals方法,相当于重写了接口里的equals方法,同理,如果一个类实现多个接口,这些接口里又有相同的方法的话,只用重写一次就行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2