初学JAVA——接口

来源:互联网 发布:骑兵进阶数据 编辑:程序博客网 时间:2024/06/04 00:41

接口是什么

接口是java语言提供的另一种重要的功能,它的结构与抽象类非常相似。
接口被用来建立类与类之间的协议。
Java用多实现来代替多继承

接口的定义和实现

  • 接口的定义
[public] interface 接口名称 [extends 父接口(多个父接口用逗号隔开)]{    [public][static][final] 数据类型 成员变量名 = 常量;    ...    [public][abstract] 返回值的数据类型 方法名(参数);}
  • 接口的实现
class 类名称 implements 接口名1,接口名2...{    //如果接口中的方法没有全部实现(重写),类需要定义为抽象类} 

接口中的成员变量和成员方法的特点

  • 接口中成员变量的特点

所有的成员变量都是static和final的。在定义的时候不能不初始化。

import java.util.*;public interface RandVals{    int NUMBER = 5;  //可以直接初始化    public static final int NUMBER1 = 6; //public和static可写可不写    Random RAND = new Random(47);    int RANDNUMBER = RAND.nextInt(10); //可以用随机数初始化    //int C   //此句错误,定义时不能不初始化}//接口中的成员变量储存在接口的静态存储区域,可以直接用接口名调用public class TestRandVals{    public static void main(String[] args)     {        System.out.println(RandVals.NUMBER);        System.out.println(RandVals.NUMBER1);        System.out.println(RandVals.RANDNUMBER);    }}
  • 接口中的成员方法的特点

所有成员方法都是public和abstract

接口的继承和嵌套

  • 接口的多继承

通过继承接口来扩展接口
在java中允许接口存在多继承而不允许类存在多继承
允许接口多继承的原因是接口中的方法没有方法体

interface A{    void fight();}interface B{    void swim();}interface C{    void run();}interface D extends A,B,C{//继承接口A,B,C来扩展接口D    void fly();}public class Main implements D{    public void fight() {};    public void swim() {};    public void run() {};    public void fly() {};}
  • 使用接口多继承的注意事项

    在接口的多继承中,如果继承两个具有相同方法名而返回值不同的接口时,会发生什么?

interface A{    void fight();}interface B{    int fight();}/*interface C extends A,B{    //此接口会报错。    //错误信息:The return types are incompatible for the inherited methods A.fight(), B.fight()    //个人理解:C继承A,B后,相当于C中拥有两个方法:void fight()和 int fight(),java中不允许存在具有相同方法名而返回值不同的方法}*/

同样的道理,在实现接口中也会出现这样的问题

interface A{    void fight();}public class Main implements A{    // int fight() {};  此句错误:The return type is incompatible with A.fight()}
  • 接口的嵌套

接口可以嵌套在接口中
特点:嵌套的接口一定是public的
实现某个接口时,并不需要实现嵌套在其内部的任何接口

interface A{    void a();    interface B    {        void b();    }    //private interface C {}  此句错误:The interface member type C can only be public}class Main implements A{    public void a() {}}class Main1 implements A.B{//嵌套接口的实现    public void b() {}}

接口也可以嵌套在类中
特点:类中的接口可以是私有的(private)。
私有的接口只能被定义它的类实现

class A{    public interface B    {        void b();    }    private interface B1        {//类中的接口可以是private的        void b1();    }    public class C implements B1    {//可以用public类实现private接口        public void b1() {}    }    private class C1 implements B1    {//可以用private类实现private接口        public void b1() {}    }}

关于Java中接口的知识点,我目前只会这些。
有什么建议或者错误的地方,请评论,谢谢。

2 0