接口
接口的作用
接口是描述规范的数据类型属于引用数据类型
接口中只定义规范(不需要实现)
定义接口
使用interface来定义接口
:[修饰符] interface 接口名{
//接口成员
}
接口成员
-
接口中方法
-
接口中的方法默认是抽象方法,所以可以省略abstract修饰符
-
接口中的方法默认都是public的,所以可以省略public
-
-
接口中的变量
-
接口中的变量只能是静态常量(static final),所以可以省略static final,静态常量在定义时就要赋值,且不可变。
-
接口不能被实例化,也不能有构造方法
接口实现(使用接口)
实现类通过implements关键字实现接口,实现接口就必须实现接口中的抽象方法。
一个类可以实现多个接口,接口之间使用逗号(,)隔开
实现的方法必须是public的
实现多个接口
实现类实现多个接口
-
public class Computer implements USBInterface, ChargeInterface{}
一个类同时继承和实现接口(extends在implements前)
-
public class LenovoComputer extends Computer implements USBInterface, ChargeInterface{ }
接口继承接口
-
public interface USBC extends USBInterface,ChargeInterface{ }
接口的新特性
JDK8接口新特性
-
在 jdk8.0 中 default 关键字可用于在接口中修饰方法(默认方法), default 修饰的方法 可以有具体实现,也只能在接口中出现。 default 修饰的方法可以被重写。
JDK9接口新特性
-
JDK9 接口中可以使用 private 修饰方法。供接口中其他方法调用。
抽象类和接口的区别
组合
-
接口可以在新类中可以组合多个接口
-
抽象类只能继承一个抽象类
状态
-
接口不能包含字段(静态字段除外,但不支持对象状态(实例字段))
-
抽象类可以包含字段
默认方法和抽象方法
-
接口中的默认方法不需要在实现类中实现,它只能引用接口中的方法,抽象方法都需要在实现类中实现
-
抽象类的抽象方法都必须在子类中实现
构造器
-
接口中不能有构造器
-
抽象类中可以有构造器(可有可无)
访问权限
-
接口中为隐式public
-
抽象类中可以是public、protected或包访问权限