接口使用实例(1)
大家好,今天我们来看看接口的一些实例,关于如何定义和实现接口,相信通过这些例子,我们能有一些清晰的认知。
先定义一个学生类:
再给定一个学生数组,对这个对象数组中的元素进行排序(按分数排):
按照我们之前的理解,数组我们有一个方法(sort 方法),能否直接使用这个方法呢?
.仔细思考不难发现,和普通的整数不一样,两个整数是可以直接比较的,大小关系明确,而两个学生对象的大小关系怎么确定呢,需要我们额外指定..
让Student类实现Comparable接口,并实现其中的cmpareto方法:
注意:Comparable接口中有一个抽象方法:
public int compareTo(T o);
我们需要重写此方法(实现该接口时)
在sort方法中会自动调用compareTo方法, compareTo的参数为Object,其实传入的就是student类里的对象,然后比较当前对象和参数对象的大小关系(按分数来算).
再次执行程序,结果就符合预期了.
注意事项:
1,对于sort方法来说,需要传入的数组的每个对象都是"可比较的",需要具备compareTo这样的能力,通过重写compareTo方法的方式,就可以定义比较规则.
2.如果没有写compareTo方法,会抛出异常。
ClassCastException 类型转换异常
3.String类为什么排序时不需要我们重写?
因为String类实现了Comparable接口,有了可比较的功能.
4.一个自义定类一定要支持可比较大小的功能,那儿么就必须去实现你的 Comparable 接口.
好了今天分享就到这里,留给大家一个问题:
假如我们需求变换了,要根据姓名比较大小(根据字符的大小来排序),大家下去自己试一试,明天再为大家解答,谢谢大家的阅读。