专栏首页Java小王子面向接口编程和面向对象编程是什么关系
原创

面向接口编程和面向对象编程是什么关系

面向接口编程和面向对象编程是什么关系

首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。

接口的本质

  • 接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。
  • 接口是在一定粒度视图上同类事物的抽象表示。比如我们说我和猴子不属于一类,分别继承Person接口和Monkey接口,但对动物学家,我们却继承同一接口:Animal接口。

面向接口编程的本质

在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。 好处:

  1. 对系统灵活性大有好处。当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将下层整个替换掉。
  2. 不同部件或层次的开发人员可以并行开工,就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。

抽象类与接口

如果单从具体代码来看,对这两个概念很容易模糊,甚至觉得接口就是多余的,因为单从具体功能来看,除多重继承外(C#,Java中),抽象类似乎完全能取代接口。 区别

  • 使用动机。使用抽象类是为了代码的复用(可以理解为代码和表示的共享机制),而使用接口的动机是为了实现多态性。
  • 抽象类和它的子类之间应该是一般和具体的关系,而接口仅仅是它的子类应该实现的一组规则。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

关注作者,阅读全部精彩内容

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是面向对象编程

    说到编程,对于初学者来讲,可能第一想到的就是敲键盘,写代码,做游戏,甚至于会联想到软件破解、网络攻防。另一方面,在学了一些编程的相关知识以后,一个最明显的感觉就...

    一头小山猪
  • Java - 什么是面向对象编程?

    OOP 代表面向对象编程。过程编程是关于编写对数据执行操作的过程或方法,而面向对象编程是关于创建包含数据和方法的对象。面向对象编程与过程编程相比有几个优点:

    川川菜鸟
  • Python - 面向对象编程 - 什么是对象和类

    类似的,上海中心大厦、北京中信大厦这些具体的大厦可以被称为对象,但是不能说大厦是一个对象

    小菠萝测试笔记
  • 到底什么是面向对象编程?

    这个面试问题让我想到了面向过程与面向对象编程的区别,咱们先简单了解下这两者定义上区别:

    淡定的蜗牛
  • C#-面向对象编程、接口、泛型

    1 开闭原则:对扩展开放,对修改(old Code)关闭 2 类的单一职责:每个类有且只有一个改变它的原因 3 优先使用组合而非继承: 避免耦合度过高 4...

    祝你万事顺利
  • 编程思想:面向对象和面向过程

    何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最...

    李海彬
  • 编程思想:面向对象和面向过程

      何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起...

    北国风光
  • 面向接口编程

    我们经常说一个库或者模块对外提供了某某API。通过主动暴露的接口来通信,可以隐藏软件系统内部的工作细节。这也是我们最熟悉的第一种接口含义。

    一粒小麦
  • 面向“对象”编程

    前面向对象和过面向都是一种思考方式也是一种思想的体现。面向过程是一种流程式的思考方式上一步不做,下一步便无法进行下去。

    DataScience
  • SpringAOP-什么是面向切面编程?

    前言:相信你知道什么是面向对象编程(OOP),但是你了解面向切面编程(AOP)思想吗?AOP作为Spring框架中的一个重要特性,我们一起来打开AOP之门吧!

    BA_NANA
  • Python面向对象设计和面向对象编程解析

    我们都知道Python是一门灵活度很高的语言,它可以面向过程,面向对象,那我们今天说说Python中的面向对象设计和面向对象编程的区别

    南山烟雨
  • Python面向对象编程

    张俊红
  • 面向对象编程-类

    面向对象编程OOP (object-oriented programming)是最有效的软件编写方法之一,面向对象是利用“类”和“对象”来创建各种模拟来实现对真...

    用户1679793
  • Python-面向对象编程

    概述: 面向过程:根据业务逻辑从上到下写代码。 函数式:将某功能代码封装到函数中,以后便无需重复编写,进调用函数即可。 面向对象:对函数进行分类和封装,让开发“...

    洗尽了浮华
  • Python面向对象编程

    面向对象最重要的概念就是类(Class)和实例(Instance),Java比较熟了,下面贴代码注释

    听着music睡
  • python3面向对象编程

    3、super().call_me() 4、property用法: class Foo: @property def foo(self): re...

    用户5760343
  • Python-面向对象编程

    面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,比如人类、动物类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥...

    py3study
  • Go面向对象编程

    它不是继承,如果我们把“内部 struct”看作父类,把“外部 struct” 看作子类,会发现如下问题:

    gaobinzhan
  • Python 面向对象编程

    二类:由抽象信息或者动作组成的集合,代表一类事物,抽象名词实例(对象):具象的,是一类事物中某一个具体的事物

    用户7886150

扫码关注云+社区

领取腾讯云代金券