6.1 接口

来源:互联网 发布:qq主题下载软件 编辑:程序博客网 时间:2024/06/04 01:21

1 接口的概念

Java中接口不是类,而是一组请求的组合。每一个实现该接口的类都必须实现该接口所有的请求操作。

//这是一个接口示例,这里要求每一个实现Comparable的类都必须有compareTo方法,输入一个Object对象返回一个整型public interface Comparable{    int compareTo(Object other);}

所有接口里面的方法都是默认public的,所以就不用显示加上public了。此外接口也可以定义常量。
值得注意的是,接口是没有实例对象的,换句话说,接口的实例对象必须通过实现该接口的类对象来表示。

接口利用举例,我们知道Arrays类有一个sort方法,用来对数组对象进行排序,但是每个数组对象里面装的内容却不一定支持比较大小,所以,一旦数组对象里面装的对象的类实现了Comparable接口,那么它就要求必须有compareTo方法,也就能够进行排序了。


2 接口的属性

接口不是类,所以,你不能够用new操作符来初始化一个接口。
但是,可以定义接口类型的变量。
这两点特性就像抽象类一样。
此外,也可以用instanceOf关键字检测是不是实现了这个接口。
接口可以继承接口。
接口内部定义的常量都是默认pubic static final类型的 。
一个类只可以继承自一个父类,却可以实现多个接口。


3 接口和抽象类

区别在于,接口可以实现多个,抽象类只能继承一个。


4 静态方法

Java SE 8,可以为接口定义静态方法了。


5 默认方法

可以用default关键字 修饰一个接口里面的方法为默认方法。

Java SE 8, 接口里用default修饰的方法可以定义方法体,省的每一个实现该接口的类都要定义一遍每一个方法体了,你可以选择覆盖你想要用的方法,而不用特定去定义那些明明不想用,却由于接口的问题必须实现该方法。


6 解决默认方法冲突的问题

  1. 父类和接口中默认方法冲突,用父类中的方法。
  2. 接口之间如果有默认方法冲突,那就必须实现这个方法,而不采用任何一个被冲突的方法,Java这样解决二义性问题。
  3. 另外,有个不可调和的问题是,方法名一样,参数一样,返回值不一样,那样是无法成功写出这个类的。
class Student implements Person, Named{    public String getName() { return Person.super.getName(); }    ...}
0 0
原创粉丝点击