第06周 预习:接口与多态

课前问题列表

  • 回顾以前数据结构的知识,所有排序算法的基本操作是什么?这个基本操作和Comparable接口又有什么关系?这个基本操作得到的结果有哪几种?
  1. 排序算法的基本操作是比较
  2. Comparable接口是一个拥有比较行为的接口,该接口代表将当前对象与传入对象other进行比较,比较的结果用int值返回。
  3. ==0,与other相等;>0,比other大;<0,比other小
  • 详细描述:为什么某个类实现了Comparable接口,就可以对该类的集合(如数组、ArrayList)使用Arrays.sort进行排序?Comparator接口相较于Comparable接口有什么优势?
  // Insertion sort on smallest arrays
        if (length < INSERTIONSORT_THRESHOLD) {
            for (int i=low; i<high; i++)
                for (int j=i; j>low &&
                         ((Comparable) dest[j-1]).compareTo(dest[j])>0; j--)
                    swap(dest, j, j-1);
            return;
        }
  1. 查看以上Arrays.sort(Obiect[ ] a)的源代码,所有实现了Comparable接口的元素都可以复用Arrays.sort(Obiect[ ] a)的排序代码,使用Arrays.sort对Comparable接口的元素组成的数组进行排序
  2. 一旦一个类实现了Comparable接口,那么对该类的比较就被固定下来了,必须要定义多个接口才能实现对多种属性的比较。而即使两个对象没有Comparable接口,也可以使用Comparator接口进行比较,只要有比较器,Arrays.sort便能对相应对象进行排序
public static <T> void sort(T[] a, Comparator<? super T> c) {
//<? super T>表示都是类型T的父类,包括T自己(特别注意)
        if (c == null) {
            sort(a);
        } else {
            if (LegacyMergeSort.userRequested)
                legacyMergeSort(a, c);
            else
                TimSort.sort(a, 0, a.length, c, null, 0, 0);
        }
    }
  • 你觉得为什么有了抽象类还需要接口?接口相较于继承有什么不同,体现了什么关系?

1.

①.类可以实现多个接口但只能继承自一个抽象类,从抽象类派生出的子类同样可以实现接口,从而,我们能得出一个结论:接口是为Java实现多继承而存在的
②.抽象类中可以存在非抽象的方法,可接口不能存在非抽象的方法,并且接口里面的方法只是一个声明,必须用 public abstract来修饰,没有具体的实现
③.抽象方法中的成员变量可以被不同的修饰符修饰,而接口中的成员变量默认都是静态常量
④.抽象类是对对象进行的抽象,而接口是一种行为规范

2.在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口
的,这叫做接 口的多实现。并且,一个类能继承一个父类,同时实现多个接口。继承,是一种血缘关系的表现;接口,就是类的额外工具。体现了Java面向对象的多态性

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值