美文网首页
Java 接口

Java 接口

作者: 有梦想的狼 | 来源:发表于2020-08-27 17:13 被阅读0次

接口

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

  • 可以定义:抽象方法、常量、嵌套类型,从Java 8开始可以定义:默认方法、静态方法(类方法)
    上述可以定义的内容都是隐试public的,因此可以省略public关键字
    从Java 9 开始可以定义private方法
  • 只能定义编译时常量,可以省略static、final
  • 抽象方法可以省略abstract
  • 不能自定义构造方法、不能定义(静态)初始化块、不能实例化
  • 接口可以多继承
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);
      }
      

相关文章

网友评论

      本文标题:Java 接口

      本文链接:https://www.haomeiwen.com/subject/bywqsktx.html