使用关键字interface来定义一个接口。接口的定义和类定义很相似,分为接口声明和接口体。

接口体中包含常量的声明(没有变量)和抽象方法两部分。接口中只有抽象方法,没有普通方法。而且接口体中所有的常量的访问权限一定都是public,而且是static常量,所有抽象方法的访问权限一定都是public(允许省略public abstract修饰符)。接口中的常量一定是public final static修饰的。

在java语言中,接口由类来实现以便使用接口中的方法。如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则会降低访问权限)。

程序可以用接口名访问接口中的常量,但是如果一个类实现了接口,那么该类可以直接在类体中使用该接口中的常量。

定义接口时,如果关键字interface前面加上public,就称这样的接口是一个public接口。public接口可以被任何一个类实现。如果一个接口不加public修饰,就称做友好接口,友好接口可以被与该接口在同一包中的类实现。

如果父类实现了某个接口,那么子类自然实现了该接口。

接口也支持继承,支持多继承,类可以同时实现多个接口。

接口的思想在于它可以要求某些类有相同名称的方法,但方法的具体内容可以不同,即要求这些类实现接口,以保证这些类一定有接口中所声明的方法。

接口回调

和类一样,接口也是java中一种重要数据类型,用接口声明的变量称作接口变量。

在java中,接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口方法。

接口回调非常类似于上转型对象调用子类重写的方法。接口回调和上转型对象是多态的体现。由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态。

如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,可以考虑使用接口。

面向接口编程

使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用。

review06的更多相关文章

随机推荐

  1. SOE 部署错误 ClassFactory cannot supply requested class

    问题描述: 部署完SOE,对某个服务启用部署的SOE时,出现错误信息,假如对地图服务SampleWorldCities启用刚部署的SOE,错误信息如下: service failed to start ...

  2. return和yield的区别

    # return 返回给调用者值,并结束此函数.#yiled 返回给调用者值,并将指针停留着当前位置.

  3. InnoDB的三个关键特性

    一.插入缓冲(insert buffer) 对于非聚集索引的插入和更新,不是每一次直接插入索引页中,而是首先判断插入的非聚集索引页是否在缓冲池中,如果在,则直接插入,否则, 先放入一个插入缓冲区中.好 ...

  4. IDEA 跑spring项目找不到get,set的问题

    @Autowired的用法和作用 这个注解就是spring可以自动帮你把bean里面引用的对象的setter/getter方法省略,它会自动帮你set/get. iDEA下安装lombok这个插件就可 ...

  5. MapReduceTopK TreeMap

    版权声明: https://blog.csdn.net/zhangxiango/article/details/33319281 MapReduce TopK统计加排序中介绍的TopK在mapredu ...

  6. slf4j和log4j结合使用步骤

    使用slf4j的优点: 提供带参数的日志输出方法(SLF4J 1.7及以后版本). pom中只需引入slf4j-log4j12,然后maven会引入它所依赖的其它JAR包. slf4j和log4j结合 ...

  7. 002 MIRO发票校验采购订单项目科目分配类别检查增强-20150819

    BADI SE19:ZINVOICE_UPDATE   MIRO发票检验过账好模拟时,检查采购订单line 是否有固定资产的行项目,如果有固定资产项目,则弹出提示框,提示消息:存在规定资产采购项目! ...

  8. Objective-C 继承和多态

    学习Java我们知道类有三大特征,封装,继承,多态.而在Objective-C中也有继承的概念,今天就来看看Objective-C中的继承和多态. 首先,我们来看看示例代码: //Animal.h # ...

  9. 前端基础之jquery_mouse相关操作与不同

    jquery中mouse相关操作与不同 mousedown() //当鼠标指针移动到元素上方,并按下鼠标左键时,会发生 mousedown 事件 mouseup() //当鼠标指针移动到元素上方,并松 ...

  10. Python socket编程之IO模型介绍(多路复用*)

    1.I/O基础知识 1.1 什么是文件描述符? 在网络中,一个socket对象就是1个文件描述符,在文件中,1个文件句柄(即file对象)就是1个文件描述符.其实可以理解为就是一个“指针”或“句柄”, ...