1. 访问修饰符 interface 接口名{
    2. 常量;
    3. 抽象方法;
    4. 默认方法; // jdk8 default 关键字修饰的方法
    5. 静态方法; // jdk8
    6. 静态内部类;// jdk8
    7. }
    • 接口定义的关键字 interface
    • 接口中的所有成员默认是public
    • 常量默认是 public static final
    • 抽象方法默认是 public abstract
    • 实现接口的关键字 implements, 一个实现类可以实现多个接口
    • 接口不能被实例化
    • 普通的实现类要实现接口中的所有抽象方法,但是实现类是抽象类,可以实现部分抽象方法
    • 接口可以多继承
    • 静态方法 子接口和实现类不能被继承,也就是直接使用,而是要接口名调用静态方法
    • 静态常量可以被继承
    • 一个实现类实现多个接口
      • 多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。
      • 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。
      • 多个接口中有同名的默认方法,需要在实现类中统一重写
      • 多个接口中有同名的抽象方法,需要在实现类中统一重写,也可以分别实现
    1. package cn.java.money.demo2;
    2. public interface IA {
    3. double PI = 3.14;
    4. static void sf() {
    5. }
    6. default void df() {
    7. }
    8. default void df2() {
    9. }
    10. void af();
    11. }
    12. package cn.java.money.demo2;
    13. public interface IB {
    14. double PI = 3.14;
    15. static void sf() {
    16. }
    17. default void df() {
    18. }
    19. void af();
    20. }
    21. package cn.java.money.demo2;
    22. public class SimpleImpl2 implements IA, IB {
    23. //分别实现
    24. IA a = new IA() {
    25. @Override
    26. public void af() {
    27. }
    28. };
    29. IB b = new IB() {
    30. @Override
    31. public void af() {
    32. }
    33. };
    34. //规定:多个接口中有同名的默认方法,需要在实现类中统一重写
    35. // 没有同名的默认方法是不需要重新的
    36. @Override
    37. public void df() {
    38. //多个接口中有同名的成员变量(其实是静态变量)可用通过接口名称调用进行区分。
    39. System.out.println(IA.PI);
    40. System.out.println(IB.PI);
    41. // 多个接口中有同名的静态方法,可用通过接口名称调用进行区分。
    42. IA.sf();
    43. IB.sf();
    44. }
    45. @Override
    46. public void af() {
    47. }
    48. public static void main(String[] args) {
    49. SimpleImpl2 simpleImpl2 = new SimpleImpl2();
    50. simpleImpl2.a.af();
    51. simpleImpl2.b.af();
    52. }
    53. }