更新时间:2023-08-31 来源:黑马程序员 浏览量:
接口可以理解为是一种规范,接口中的成员都是public修饰的,写不写都是,因为规范的目的是为了公开化。Java JDK8之前接口中只能是抽象方法和常量,没有其他成分。但需要注意接口不能实例化。
接口的用法:
接口是用来被类实现(implements)的,实现接口的类称为实现类。实现类可以理解成所谓的子类。
修饰符 class 实现类 implements 接口1, 接口2, 接口3 , ... { } 实现的关键字:implements
从上面可以看出,接口可以被类单实现,也可以被类多实现,也就是一个接口可以继承一个接口也可以同时继承多个接口。但一个类实现接口,必须重写完全部接口的全部抽象方法,否则这个类需要定义成抽象类。
JDK8开始接口新增的方法
默认方法
类似之前写的普通实例方法必须用default修饰,默认会public修饰。需要用接口的实现类的对象来调用。
default void run(){ System.out.println("--开始跑--"); }
静态方法
默认会public修饰,必须static修饰。接口的静态方法必须用本身的接口名来调用,静态方法实现可以参考以下方法。
static void inAddr(){ System.out.println("我们都在黑马培训中心快乐的学习Java!"); }
私有方法
私有方法就是私有的实例方法:,必须使用private修饰,从JDK 1.9才开始有的。只能在本类中被其他的默认方法或者私有方法访问。
private void go(){ System.out.println("--准备--"); }
JDK8版本开始后,Java只对接口的成员方法进行了新增,允许接口中直接定义带有方法体的方法,原因是接口丰富后可能对子代码进行更改。
例如下面的项目,Version1.0 成功上线没有问题。
public interface Inter { …若干抽象方法 }
public class InterImplA implements Inter {}
public class InterImplB implements Inter {}
在项目Version2.0时需要扩展功能,对Inter接口丰富,于是加入10个新的抽象方法,此时改了接口就要所有实现类实现这些方法。
public interface Inter { …若干抽象方法 }
public class InterImplA implements Inter {}
public class InterImplB implements Inter {}
要丰富接口功能的同时又不对子类代码进行更改。就要允许接口中直接定义带有方法体的方法。
注意:JDK8新增的3种方法我们自己在开发中很少使用,通常是Java源码涉及到的,我们需要理解、识别语法、明白调用关系即可。