你的位置:首页 > Java教程

[Java教程]【JAVA】接口(一)


一、接口的概念

  接口是一种更彻底的抽象。接口是从多个相似类中抽象出来的规范,接口不提供任何实现,接口体现的是规范和实现分离的设计哲学。

二、接口的定义

  接口定义不再使用class关键字,而是使用interface关键字。

  以下是定义接口的基本语法:

  【修饰符】interface 接口名 extends 父接口1,父接口2...

  {

    //常量定义

    //抽象方法定义

  }

  • 修饰符只能是public 或者省略,省略的话就是包访问级别,即只有在同一个包下才能访问此接口。
  • 一个接口可以有多个父类,但是只能继承,不能实现接口。
  • 接口里定义的是多个类共同的公共的行为规范,因此类中定义的Field、方法、内部类、枚举类都是public访问权限。
  • 接口中的方法只能是抽象方法,由于abstract不能和static共同来修饰一个方法,所以接口中的所有方法总是public abstract来修饰的,可以缺省不写,默认会加上的。
  • 接口中定义的Field是接口相关的,而且只能是常量,所以接口中定义的Field都是public static final 修饰的,可以缺省不写,系统会默认加上。
  • 接口中不能定义构造器和初始化块
  • 接口中可以定义内部类、枚举类、接口,默认都是使用public static修饰,而且只能是public static 修饰。

  下面我们看一下接口定义的例子:

  

package interfaceDemo;public interface OutPut {  //接口中定义的Field只能是常量  int MAX_CACHE_LINE = 50;    //这句话和上面那句话是等价的  //public static final int MAX_CACHE_LINE = 50;    //接口中定义的方法只能是抽象的,没有方法体  void out();    void getData(String msg);}

三、接口的继承

  接口和类不一样,它是支持多继承的。多个父接口跟在extends关键字后面,以逗号隔开。和类继承一样,接口继承一个父接口的时候,会获得父接口中定义的所有的抽象方法以及常量。

  

public interface InterfaceA {  int A = 1;  void print();}public interface InterfaceB {  int B = 2;  void say();}public interface InterfaceC extends InterfaceA, InterfaceB{  int C = 3;    public static class Test  {    public static void main(String[] args) {      System.out.println(InterfaceC.A);      System.out.println(InterfaceC.B);      System.out.println(InterfaceC.C);    }  }}

  输出结果为:

  1
  2
  3