概述
- 接口是个特殊的抽象类,接口中全是抽象方法
- 接口是定义规则规范的类,规定了一些类必须提供哪些方法来满足实际需求
- 将方法的定义和实现进行分离,降低耦合度,提高开发的效率
接口的定义
关键词 interface
格式
public interface 接口名 { //接口成员 }
接口成员
属性
静态常量
public static final 类型 常量名=常量值;
特点
- 接口的属性只能是公共的静态常量
- public static final可以省略其中的一个到多个,但是代表的还是公共的静态常量
方法
抽象方法
public abstract 返回类型 方法名();
特点
public abstract可以省略1-多个,但是代表的还是抽象方法
public interface InterA {
// 静态常量
public static final double PI = 3.14;
// 抽象方法
public abstract void run();
void show(); }
接口的实现类
继承的关键词:extends
接口的实现关键词:implements
格式:
public class 实现类类名 implements 接口名{ //接口方法的实现 }
public class InterAImpl implements InterA {
@Override
public void run() {
System.out.println("run");
}
@Override
public void show() {
System.out.println("show");
}
}
接口的使用
public static void main(String[] args) {
// 接口是不能实例化的
// InterA interA = new InterA();
// 多态
InterA iA = new InterAImpl();// 建议使用
iA.run();
InterAImpl impl = new InterAImpl();
impl.run(); }
注意:
接口时不能实例化的,但是可以通过实现类去实例化,去创建对象
接口的实现类分类
- 普通类,全部实现了接口中的所有抽象方法
- 是个抽象类,有些抽象方法在实现类中没有实现
public abstract class InterAimplDemo implements InterA {
@Override
public void run() {
}
}
接口的多实现和多继承
- 继承是单继承:一个类只能有一个父类
- 接口的实现类,可以实现多个接口,用逗号隔开(突破了单继承的特点)
- 接口的实现类需要重写所有接口中的方法
- 多继承,接口可以继承接口,但是不能继承普通类
- 接口可以继承多个接口
注意:
- 接口中不能有构造方法
- 接口中不能有构造代码块,静态代码块
- 接口中不能有普通方法,jdk8中可以有含方法体的方法