zoukankan      html  css  js  c++  java
  • 《四》接口

    《四》接口

    一、接口基础知识

    接口是抽象类的延伸,可以将它看作是纯粹的抽象类,对外进行约束,接口中的大多方法都没有方法体,jdk1.8以后,default关键字修饰的方法可在接口中实现。

    • 属性全都是全局静态常量
    • 方法都是全局抽象方法
    • 无构造方法

    接口使用interface关键字进行定义,其语法如下:

    [访问修饰符] interface 接口名 [extends 父接口名列表]{
    
        [public] [static] [final] 常量 = 值;
    
        [public] 返回值类型 方法名(参数项);
    
        [default] 返回值类型 方法名(参数项){//方法体}
    }
    • 访问修饰符一般为public,也可不写,为默认时,该接口的访问权限仅局限于所属的包
    • 接口名命名规范和类命名规范一样
    • extends 父接口名列表:可不写,用于指定要定义的接口继承于哪个父接口。

    • 在接口中定义的任何变量都自动是static和final的,因此,在接口中定义变量时,必须进行初始化,而且,实现接口的子类不能对接口中的变量重新赋值,但常量在接口中没有意义,很少使用
    • 一般方法在接口中没有方法体,而被default修饰的方法在jdk1.8后可在接口中实现。
    • 由于接口中的方法大都是抽象的,因此,当子类实现接口时,必须实现接口中的所有不被default的方法

    二、多重继承

    Java中类不允许多重继承,但使用接口就可以间接实现多重继承,一个类可以同时实现多个接口,这样就可以将所有需要实现的接口放置在implements关键字后并使用逗号“,”隔开,语法:

    class 类名 implements 接口1, 接口2, …, 接口n{
      //类成员  
    }

    注意:每继承一个接口时都需要实现接口中所有的方法,这样一个类可能会有很多很多的代码,注释就很重要了,不然下次看就一脸懵逼 ?_?

    使用多重继承时,可能出现变量或方法名冲突的情况,解决该问题时,如果变量冲突,则需要明确指定变量的接口,即通过“接口名.变量”实现;而如果出现方法冲突时,则只要实现一个方法即可。

    接口也可以继承接口,和类继承类的使用方法一样,语法:

    interface 子接口名 extends 父接口名{}

    注意:接口继承接口,则子类在实现子接口时,需要同时实现父接口和子接口中定义的所有方法

    三、区分抽象类和接口

    虽然说java中的接口是抽象类型,抽象方法的集合,两者也有很多不同的地方。抽象类是对根源的抽象,而接口是对动作的抽象;抽象类的功能远超过接口,但一个类只能继承一个抽象类,而接口可多重继承,所以各有各的好处。

    • 接口不能被实例化,没有构造方法,但抽象类可以有构造方法。
    • 抽象类中可以有静态代码块等,接口中不可以。
    • 子类只能继承一个抽象类,但可以实现任意多个接口。
    • 一个类要实现一个接口必须实现接口中的所有方法,而抽象类不必。
    • 抽象类中的成员变量可以是各种类型,而接口中的成员变量只能是public static final的。
  • 相关阅读:
    NodeJS加MongoDB应用入门
    调试NodeJS应用
    二月一号博客
    大三寒假第二篇学习记录
    大三寒假第一篇学习记录
    jQuery处理json数据
    Mapreduce案例测试
    你的灯还亮着吗?发现问题的真正所在(一)
    大型数据库技术(一)
    暑假第八周博客
  • 原文地址:https://www.cnblogs.com/beimingdaoren/p/13037510.html
Copyright © 2011-2022 走看看