前言:
接口是一种规范和标准,它是一些方法特征的集合,但无具体的实现细节。接口可以被类或其他接口实现,通过面向接口的编程,可以提高代码的复用率、可维护性、可扩展性。
1.接口概念
在现实生活中,我们都能见到接口,接口是一种公共规范和标准。符合规则则可以使用。
java中,接口可以看成是多个类的公共规范,是引用数据类型。
接口与抽象类有些类似,最核心的区别在于抽象类能包含普通方法和普通字段,且这些成员都能直接被子类使用(不用重写),而接口不能包含普通方法,且子类必须重写所有接口的抽象方法
2.语法规则和使用
关键字:interface(用于定义接口)
关键字:implements(用来实现接口)
接口的定义方式与类的定义方式类似,只需吧class换成interface即可
语法格式:interface 接口名称{
//抽象方法。。。
}
类要想使用接口,则通过implements来实现接口,并且重写接口的所有抽象方法(子类与父类为extends继承关系,类与接口是implements实现关系)
语法格式:class 类名 implements 接口名称{
//重写的抽象方法。。。
}
接口的实用代码实例:
用笔记本完成使用鼠标,电脑的操作(USB接口)
USB:
KeyBoard:
Mouse:
Computer:
Test(调试测试):
3.接口的特性
(1)接口类型也是一种引用类型,不可以直接实例化对象
(2)接口中每一个方法都被指定隐藏为public abstract(不可修改,不可随意更换修饰符否则报错)
(3)接口中的方法无具体实现,只能由实现接口的类来重写实现
(4)重写接口的方法时,要注意实现类重写的访问权限要大于等于接口的方法的访问权限,已知接口的访问权限为public,则实现类重写方法时访问权限也必须为public
(5)接口中也可以存在成员变量,但是必须为public static final所修饰的,接口中的变量也被隐式的指定为public static final所修饰。
(6)接口不能有静态代码块和构造方法(但可以有静态方法和default修饰的方法)
(7)接口不是类,但是编译完成后的后缀带.class
(8)接口中被static 或 default所修饰的方法可以有具体实现
关键字:default(允许接口中存在有默认方法,用来修饰接口中的方法)
4.实现多个接口
对于继承来说,一个类只能继承一个父类,不支持多继承多个父类。所以有时候实现复杂多样化的代码会很麻烦。但一个类可以实现单个或多个接口,在java中,也经常使用一个类继承一个父类实现多个接口的写法
单个接口:
小明实现了run这个接口的方法
多个接口:
格式:implements 接口1,接口2,接口3...
小明不仅实现了跑步的方法,还实现了游泳的方法
注:一个类实现多个接口时,每个接口的抽象方法都要实现!!!
5.接口间的继承
接口与接口之间也可以继承,甚至可以多继承,利用extends来继承
多继承格式:extends 接口1,接口2,接口3...
如上述图:运动类继承了足球,游泳,跑步等接口,使用起来也会更加的多样化
但是同时也是要实现所有继承过来的抽象方法,结果是: