预习:接口与多态

学习目标

  1. 掌握接口基本概念并理解接口与多态的关系。
  2. 熟练掌握Comparable接口与Comparator接口在排序中的应用。
  3. 了解嵌套类的基本概念

课前问题列表

  1. 回顾以前数据结构的知识,所有排序算法的基本操作是什么?这个基本操作和Comparable接口又有什么关系?这个基本操作得到的结果有哪几种?
  2. 详细描述:为什么某个类实现了Comparable接口,就可以对该类的集合(如数组、ArrayList)使用Arrays.sort进行排序?Comparator接口相较于Comparable接口有什么优势?
  3. 你觉得为什么有了抽象类还需要接口?接口相较于继承有什么不同,体现了什么关系?

answer:

question1:

回顾以前数据结构的知识,所有排序算法的基本操作是什么?这个基本操作和Comparable接口又有什么关系?这个基本操作得到的结果有哪几种?

1.排序算法的基本操作是比较和交换

2.Comparable的compareTo方法的返回值是int型,利用返回值与0比较来判断大小并利用sort实现排序,compareTo返回值是0,通常如果我们在实现类中重写了equals后,是表示两者相同,返回值大于0,表示比较者大于被比较者。

such as:x.compareTo(y)>0,x>y;x.compareTo(y)<0,x<y.

在实现了Comparble接口的类,利用sort函数进行排序,内部采用二分查找加插入排序来完成,二分查找可以更快的实现排序,减少时间复杂度。

question2:

详细描述:为什么某个类实现了Comparable接口,就可以对该类的集合(如数组、ArrayList)使用Arrays.sort进行排序?Comparator接口相较于Comparable接口有什么优势?

1.Comparable是内部排序,想要使用的类就必须实现该接口,并重写compareTo方法,如果修改排序顺序,就需要跟更改类中代码。

2.Comparator接口是一个比较器,排序规则是在外部实现,排序时利用sort方法来实现排序,排序时需要额外传入Comparator的对象,只需要修改比较器内代码,无需更改类中代码。

 Collections.sort需要传入需要排序的数组表和比较器,比较器不需要让在类内部完成,可以在需要时申请,并且可以利用Lambda表达式简写。

question3:

你觉得为什么有了抽象类还需要接口?接口相较于继承有什么不同,体现了什么关系?

1.Java基于c++实现的,Java不像c++可以继承多个父类,在Java中一个子类只能拥有一个父类,但是却可以实现多个接口,利用接口来实现继承,而有一些不同类的通用属性提取作为抽象方法在接口中。这个提取的接口可以用于许多相似的类中,像是发动机,汽车类可以有,飞机类可以有,但是发动机理论并不是他们的父类,这时可以利用接口来实现。

2.实现同一个接口的类,并不要求概念关系一样,但他们可以做同一件事,比如鸟和飞机都能飞,体现了应该是has-a或者like - a。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值