Java 接口

2020-08-27  本文已影响0人  有梦想的狼

接口

方法申明的集合,用来定义规范、标准

public interface Times {
    final int a = 10;
    static int b = 20;
    int c = 30;
    static final int d = 40;
    public int e = 50;
    abstract void print();
    void show();
    default void printTimesDefault() {
        System.out.println("Times interface");
    }
    static void printTimesStatic() {
        System.out.println(b);
    }
}

接口的细节

  1. 接口名称可以在任何使用类型的地方使用
  2. 一个类可以通过implements关键字实现一个或多个接口
    • 实现接口的类必须实现接口中定义的所有的抽象方法,除非他是抽象类
    • 如果一个类实现的多个接口中有相同的抽象方法,只需要实现此方法一次
    • extends和implements可以一起使用,implements必须写在extends的后面
    • 当父类、接口找那个的方法签名一样时,那么返回值类型也必须一样
    public interface Print {
      default void printPrintDefault() {
        System.out.println("Print interface");
      }
      void text();
    }
    
    public class Text extends Object implements Print, Times {
      @Override
      public void print() {
          // TODO Auto-generated method stub
          System.out.println("Text print");
      }
    
      @Override
      public void show() {
          // TODO Auto-generated method stub
          System.out.println("Text show");
      }
    
      @Override
      public void text() {
          // TODO Auto-generated method stub
          System.out.println("Text text");
      }
    }
    
  3. 一个接口可以通过extends关键字继承一个或者多个接口
    public interface Show extends Print, Times {
        void show();
    }
    
  4. 如果接口需要升级,比如增加新的抽象方法,会导致大幅的代码改动,以前实现接口的类都得改动。若想在不改动以前实现类的前提下进行接口升级,从Java 8开始,有2中方案
    • 默认方法(default method)
      用default修饰默认方法
      default void printTimesDefault() {
        System.out.println("Times interface");
      }
      
    • 静态方法(static method)
      接口中定义的静态方法只能通过接口名调用,不能被继承
      static void printTimesStatic() {
        System.out.println(b);
      }
      
上一篇下一篇

猜你喜欢

热点阅读