一.什么是接口

接口是抽象类的延伸,可以将它看作是纯粹的对象类,接口中的方法都没有方法体。

接口使用interface关键字定义,语法:

public interface MyInterface {public void foo();//其他方法
}

注意:1.接口类中的方法体都是抽象方法,没有方法体。2.接口类中的方法必须都是公共的,所以可以省略public关键字,默认是public。3.接口类中的属性全都是全局静态常量。

二.如何使用接口

1.编写接口——使用interface关键字定义类

public interface UsbInterface {/*** USB接口提供服务。*/void service();
}

2.实现接口——使用implements

public class UDisk implements UsbInterface {    //多个接口使用“,”隔开public void service() {System.out.println("连接USB口,开始传输数据。");}
}

3.使用接口

public class Test{public static void main(String[] args){UsbInterface uDisk = new UDisk();uDisk.service();}
}

注意:接口表示的是一种能力,体现在接口的方法上。在设计程序时,只关心实现类有何能力,而不关心实现细节;面向接口的约定而不考虑接口的具体实现,接口是一种约定体现在名称和注释上:1.有些接口只有名称,2.方法的实现方式要通过注释来约定。

三.接口的特性

1.接口不可以被实例化。

2.实现类必须实现接口的所有方法(类似于抽象类和抽象方法)。

3.实现类可以实现多个接口,不同接口之间使用“,”隔开。

4.接口中的变量都是静态常量,即使用static和final修饰的最终变量(一般不在接口中声明变量)。

四.如何理解接口是一种能力?

接口有比抽象类更好的特性:

1.可以被多继承

2.设计和实现完全分离

3.更自然的使用多态

4.更容易搭建程序框架

5.更容易更换实现

五.面向接口编程的好处

1.更加抽象,更加面向对象

2.提高编程的灵活性(提高了代码的可扩展性)

3.实现高内聚、低耦合

4.提高可维护性,降低系统维护成本

六.接口和继承的异同

继承:类和类之间是继承关系,关键字extends。单继承,子类和父类的关系

接口:类和接口之间是实现关系,关键字implements。多实现,接口和实现类的关系

什么是接口,面向接口编程的好处是什么?相关推荐

  1. 面向接口编程的好处分析

    洞悉编程思想是我们学习语言过程中的必由之路,但注意对于编程思想的理解一定要建立在大量的代码实现经验上,不然只是在口头空谈编程思想而不去编程,根本无法深入理解思想的核心. 面向对象思想的核心之一,就是模 ...

  2. python面向接口编程_Python 中的面向接口编程

    前言 "面向接口编程"写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性.维护性谁都不能拒绝 ...

  3. 问题小结(二)——maven的核心功能、面向对象编程和面向接口编程的区别、抽象类和接口的区别等

    文章目录 1. Java创建对象有哪四种方式? 2. 什么是maven?maven的核心功能有哪些? 3. 什么是MVC?说说分层的好处. 4. Spring的两大核心技术是什么? 5. 什么是IOC ...

  4. 面向接口编程的优点_为什么我们要面向接口编程

    到底面向?编程 面向过程编程( ProcedureOriented.简称 PO) 和 面向对象编程( ObjectOriented.简称 OO) 我们一定听过,然而实际企业级开发里受用更多的一种编程思 ...

  5. 面向接口编程 (噬菌体) 不错的接口

    面向接口编程 依赖倒置的意思是,我们在面向对象设计时,将这个上层依赖下层的结构化编程依赖思想倒置一下子(其实不是倒置,应该是转换一下子),变成:上层不依赖于下层,下层也不依赖于上层,上层和下层都依赖一 ...

  6. 细说Mybatis一级缓存、二级缓存以及mybatis获取mapper的面向接口编程思想(Mapper接口动态代理实现原理)(二)

    上一章和大家分享了Mybatis一级缓存和二级缓存,本章将继续和大家分享Mapper接口动态代理实现原理,按照国际惯例,先看源码,然后结合原理,写一个自己的小demo,从理论到实战,真正掌握面向接口编 ...

  7. 面向接口编程详解(一)——思想基础

    我想,对于各位使用面向对象编程语言的程序员来说,"接口"这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为 ...

  8. 面向接口编程详解(一)—— 思想基础

    我想,对于各位使用面向对象编程语言的程序员来说,"接口"这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为 ...

  9. 面向接口编程详解(三)——模式研究

    通过前面两篇,我想各位朋友对"面向接口编程"的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象.但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面 ...

最新文章

  1. NBT:主流高通量测序仪在人/细菌/宏基因组测序评测结果发布,华大智造表现优异...
  2. 经济学中的定量分析python_Sargent定量经济学(3):Python
  3. idea使用svn拉取项目代码_IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!...
  4. Java技巧: 根据网址查询DNS/IP地址
  5. mysql ip比较大小_MySQL优化/面试,看这一篇就够了
  6. 关于FPGA核心bug解决
  7. win7系统下的打印机不能扫描
  8. datatables 树形表格 java数据组装_实学:Java开发自己的博客系统-第三十篇(后台添加栏目功能-4)...
  9. 微信开发第7章 通过accesstoken获取用户黑名单列表
  10. iOS开发之tintColor属性详解
  11. php sub pos,PHP pos()用法及代码示例
  12. linux输入法_惊奇软件:这是我见过最有【态度】的输入法!
  13. 雷视一体机助力智慧高速路侧感知建设
  14. 三月校赛1006 wuli通通和Fibonacci (a[n]=f[n]*(n^m)的前k项和)
  15. Revit二次开发_类别对应的BuiltInCategory枚举
  16. win10更新后闪屏处理方法
  17. 霍营派出所办理居住证
  18. 计算机硬件日语,求一些电脑硬件的日语说法(比如显卡等)
  19. Flutter:bottomNavigationBar图标白色的解决办法
  20. springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839

热门文章

  1. Vue结合element-ui实现导航菜单展开收缩小功能
  2. HM代码-码控(1)-乱七八糟的初始化
  3. NOI2020后记,以及其它
  4. Centos7 Cacti(仙人掌)
  5. 基于JAVA家政服务预约网站系统设计与实现 开题报告
  6. x=1u c语言,c语言中1u是什么意思
  7. 2015罗辑思维跨年演讲浓缩精华版整理
  8. TMMi测试能力成熟度模型简介
  9. 深入理解JUC的8锁现象
  10. 微信小程序——引用阿里云字体