接口(Interface
接口(Interface)
-
基本介绍:
接口是抽象类的一个延申,特是一个特殊的抽象类,在接口中只有抽象方法,没有具体方法(jdk1.8之前)
-
书写方式:
java中使用interface关键字来定义接口(将定义类的关键字class更改为interface)
public interface pop3 {//接口 public abstract void getMethod();//抽象方法 }
-
实现:
implements:实现接口的关键字,实现接口的只能是类
public class pop2 implements pop3{//接口的实现类 @Override//重写接口中的抽象方法 public void getMethod() { } }
-
用处:
用处:提供规范
对外部提供功能的声明,故接口是用来被具体类实现的,类实现接口使用implements关键字。
-
优点:
通过接口大大提高了系统的可扩展性和可维护性达到灵活的效果。
-
特点:
- 一个类继承一个接口后,该类必须实现此接口的所有抽象方法,若此类不想实现接口中的方法,则必须定义该类为抽象类。
- 接口不能被实例化,只能通过其实现类来实现。
- 接口中没有构造方法。
- 接口中的抽象方法必须(只能)是public,抽象的,不写时默认是公共的,抽象的。
- 接口中的属性必须(只能)是final,static的,步写时默认是final,static,注意:属性必须赋初始值。
- 通过接口和实现类可以实现多态。声明是接口类型,具体使用的是其实现类对象。此时执行方法时,执行的是实现类实现之后的方法。
- 一个接口可以被不同的类实现;一个类也可以实现多个接口,多个接口之间用','隔开
- java中接口可以继承接口,子接口自动拥有父接口的属性和方法。
- java中接口是多继承机制的。
-
JDK1.8后接口的变化:
-
增添default方法:
- 接口中可以定义非抽象方法(在方法声明部分添加default关键字)
- 使用目的:解决接口升级问题(多个类继承同一接口,此方法要添加一个方法时,多个类将通知报错),在接口中定义非抽象方法就很好地解决了这个问题。
-
增添static方法:
- 允许接口直接定义一个或多个静态方法,静态方法可以存在方法体,
- 可以直接通过接口名直接调用静态方法。不能通过接口的实现类对象调用接口的静态方法。
-
增添@FunctionalInterface
-
解释:注解,意思是声明一个函数式接口。
-
函数式接口的要求:接口中有且仅有一个抽象方法。
-
它的存在是为了适应lambda表达式。
-
书写位置:接口外部。如下:
@FunctionalInterface public interface pop3 { public abstract void getMethod(); }
-
-