美文网首页
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