访问修饰符 interface 接口名{ 常量; 抽象方法; 默认方法; // jdk8 default 关键字修饰的方法 静态方法; // jdk8 静态内部类;// jdk8}
- 接口定义的关键字 interface
- 接口中的所有成员默认是public
- 常量默认是 public static final
- 抽象方法默认是 public abstract
- 实现接口的关键字 implements, 一个实现类可以实现多个接口
- 接口不能被实例化
- 普通的实现类要实现接口中的所有抽象方法,但是实现类是抽象类,可以实现部分抽象方法
- 接口可以多继承
- 静态方法 子接口和实现类不能被继承,也就是直接使用,而是要接口名调用静态方法
- 静态常量可以被继承
- 一个实现类实现多个接口
- 多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。
- 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。
- 多个接口中有同名的默认方法,需要在实现类中统一重写
- 多个接口中有同名的抽象方法,需要在实现类中统一重写,也可以分别实现
package cn.java.money.demo2;public interface IA { double PI = 3.14; static void sf() { } default void df() { } default void df2() { } void af();}package cn.java.money.demo2;public interface IB { double PI = 3.14; static void sf() { } default void df() { } void af();}package cn.java.money.demo2;public class SimpleImpl2 implements IA, IB { //分别实现 IA a = new IA() { @Override public void af() { } }; IB b = new IB() { @Override public void af() { } }; //规定:多个接口中有同名的默认方法,需要在实现类中统一重写 // 没有同名的默认方法是不需要重新的 @Override public void df() { //多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。 System.out.println(IA.PI); System.out.println(IB.PI); // 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。 IA.sf(); IB.sf(); } @Override public void af() { } public static void main(String[] args) { SimpleImpl2 simpleImpl2 = new SimpleImpl2(); simpleImpl2.a.af(); simpleImpl2.b.af(); }}