Javase | 接口

1.接口

  • 接口 (interface) 是Java中一种特殊的引用类型,它定义了一组方法的规范,但没有提供方法的具体实现。

  • 实现该接口的类,需要实现接口中定义的所有方法。

  • Java 接口中的方法默认情况下是没有方法体的。在 Java 8 之前,接口只能包含抽象方法,这些方法没有方法体,只有方法签名。

  • 然而,从 Java 8 开始,你可以在接口中添加默认方法和静态方法。默认方法允许你在接口中定义具有默认实现的方法,而静态方法则允许你在接口中定义静态方法。默认方法和静态方法都可以有方法体,但是它们不能有访问修饰符。 在 Java 8 及以后的版本中,接口中的普通方法仍然不能有方法体

  • 实现接口的类必须提供方法的具体实现,并满足接口定义的方法签名。

  • 一个类可以实现多个接口,从而获得多个接口定义的方法。

  • 接口中所有的方法都是public的,所以创建方法时可不用写访问修饰符。接口中的字段总是public static final。

    例如:

     访问修饰符 interface 接口名{
           
           
        //创建方法
        返回值类型 方法名(参数列表)
    }
    
    public interface Comparable {
           
            //创建一个接口
        //创建一个方法: 接口中所有的方法都是public的,所以创建方法时可不用写访问修饰符
        int compareTo(Object other);
    }
    
  • Java 接口中的方法默认情况下是没有方法体的。在 Java 8 之前,接口只能包含抽象方法,这些方法没有方法体,只有方法签名。

  • 然而,从 Java 8 开始,你可以在接口中添加默认方法和静态方法。默认方法允许你在接口中定义具有默认实现的方法,而静态方法则允许你在接口中定义静态方法。默认方法和静态方法都可以有方法体,但是它们不能有访问修饰符。

    下面是一

2.接口的实现

  • 要让类实现一个接口,需要使用关键字 implements

  • 类实现接口时,类要实现接口中的所有方法。

    例如:

    public interface Comparable {
           
           
        //创建一个方法
        int compareTo(Object other);
    }
    

    类中实现接口:

    public class Employee implements Comparable {
           
           
        
        @Override
        public int compareTo(Object other) {
           
           
            return 0;
        }
    }
    
    
  • 在接口声明中,定义compareTo( )方法没有声明为public,这是因为接口中的所有方法都是public的。

    不过实现接口时,必须帮方法声明为public。否则,编译器会认为这个方法的访问权限是包可见性。

3.接口的特点

  • 接口 ( interface) 不是类,不能用new运算符来实例化一个接口。虽然不能实例化接口,但能声明接口的变量。

  • 接口变量必须引用实现了这个接口的类对象。

    例如:

    //声明接口的变量
    Comparable c;
    //接口变量必须引用实现了这个接口的类对象
    c=new Employee();
    
  • 接口不能包含实例字段,但可以包含常量。

    例如:

    public interface Moveable{
           
           
    double d = 13.14; //这个字段会被自动设置为public static final
    }
    
  • 与接口中的方法都自动被设置为public一样,接口中的字段总是public static final。

    例如:

    interface Constants {
           
           
     //这两个字段会被自动设置为public static final
    int MAX_VALUE = 100;
    String DEFAULT_NAME = "John Doe";
    }
    

4.接口的继承

  • 接口之间可继承,也叫接口的拓展。

    例如:

      public interface Moveable{
           
           
    }
    
      public interface Powered extends Moveable{
           
           
    }
    

5.接口中方法:

5.1 接口的默认方法

  • Java 8引入了默认方法的概念,允许在接口中定义具有默认实现的方法。默认方法使用default关键字进行修饰,提供了方法的具体实现。

  • 当有多个同名方法时,默认方法先被选用,被默认选择。

  • 默认方法可以在接口中直接使用,也可以在实现类中选择性地重写。

    例如:

      public interface Comparable<T>{
           
           
          default int compareTo(T other){
           
           
              //默认方法可以有方法体
              return 0;
          }
      }
    
    

5.2 接口的静态方法

  • Java 8引入了接口中的静态方法,用于在接口中定义具有方法体的静态方法。

  • 静态方法使用static关键字进行修饰,可以通过接口名直接调用,无需实例化对象。

    例如:

     static void staticMethod() {
           
           
         //静态方法通过接口名.方法名调用
       System.out.println("这是一个静态方法"); 
         //抽象方法通过实例化对象来再调用方法
        }
    
    

5.3 接口的私有方法

  • Java 9引入了接口中的私有方法,用于在接口内部封装和复用代码。

  • 私有方法使用private关键字进行修饰,只能在接口内部调用,不能被接口的实现类或其他类直接访问。

    例如:

      private void privateMethod() {
           
           
            System.out.println("这是接口中的私有方法");
        }
    
    

5.4 与接口有关的其他方法

  • int comparaTo (T other)

    用这个对象与other进行比较。如果这个对象小于other则返回一个负整数。如果氙灯则返回0;否则返回一个正整数。

    这个方法的包:java.lang.Comparable

  • static void sort (Object [ ] a)

    对数组a中的元素进行排序。要求数组中元素必须实现了Compareble接口。并且元素之前是可以进行比较的。

    这个方法的包:java.util.Arrays

  • static int compare (int x,int y)

    两个整数进行比较。如果 x < y 返回一个负整数;如果x和y相等,则返回0;否则返回一个正整数。

    这个方法的包:java.lang.Integer

  • static int compare (double x , double y)

    两个浮点数进行比较。如果 x < y 返回一个负整数;如果x和y相等,则返回0;否则返回一个正整数。

    这个方法的包:java.lang.Double

猜你喜欢

转载自blog.csdn.net/m0_70720417/article/details/132219089