代码之家  ›  专栏  ›  技术社区  ›  MohsinG

在OOP中,在不同的上下文中,接口的不同含义是什么

  •  3
  • MohsinG  · 技术社区  · 11 年前

    我对面向对象编程有点陌生。在我的旅途中,我遇到了一些让我困惑了几天的事情。这就是“接口”一词,以及它是如何实现的 在不同的上下文甚至不同的编程语言中有不同的含义 我想理解“界面”,但当我做研究时,我似乎得到了不同的定义,好像它有多重含义。

    有人能给我一个在每个上下文中接口的简明定义吗(只是主要的)?

    我买了一本名为 面向对象的思维过程 作者:Matt Weisfeld 一些 其中已确定的项目如下:

    1. 图形用户界面
    2. 类的接口基本上是其方法的签名
    3. Objective-C代码可以分解为物理上独立的模块,称为接口和阻抗
    4. Java风格的接口和Objective-C协议基本上是父类和子类之间的契约

    (OOP中接口一词的使用/定义是否比上述定义更多?)

    如果有人能解释OOP中接口一词的不同上下文,我们将不胜感激。

    5 回复  |  直到 11 年前
        1
  •  4
  •   Sebastian Nielsen    5 年前

    简短回答:

    您的第四个要点可能最接近OOP接口是什么这一普遍接受的概念: 合同 需要相互交流的各方之间。此类合同规定了(a)一方提供的手段,以及(b)另一方要求的手段。

    长篇回答:

    一般来说,接口是允许两个(可能非常不同)实体相互交互的东西;这使他们能够一起工作,同时又能保持距离。接口是双方达成一致的“共同点”。

    (可以像门锁一样简单:锁和任何能工作的钥匙都必须“放在一起”在一个地方;你可以把那个地方称为接口。)

    这个通用定义如何适用于您的列表?

    图形用户界面

    GUI允许人类和计算机程序进行交互。它不要求计算机成为完全的人类(用耳朵听、用嘴说话、微笑等),也不要求人类本身成为计算机程序。(排除了过去几十年的UI。:)

    “类的接口基本上是其方法的签名”

    (公开可见的)方法及其确切的签名是其他类型能够与该类交互的唯一手段,因此从这个意义上说,它们一起形成了该类的接口。

    此外,每个构造函数和方法的一般描述通常是接口的一部分,也是类及其每个方法用途的简短一般描述。当然,类名本身也很重要。

    “Objective-C代码可以分解为物理上独立的模块,称为接口和[实现]”

    我对Objective-C还不够了解,无法对此发表评论,但许多语言都有一个模块系统,可以将代码库划分为单独的、功能独立的模块。这些通常不必向外界公开它们的所有类型和功能;每个模块可以仔细地声明其他模块可以看到的内容。如上所述,所有被选择公开的都是“接口”,因为它将是与模块中的任何内容交互的唯一方式。“模块中的任何内容”都保持隐藏状态;它被称为“实施”,外人不应该知道它。

    “Java风格的接口和Objective-C协议基本上是父类和子类之间的契约”

    这也许最接近OOP中普遍接受的接口概念:它们是 双方签订的合同 想要互动的各方。请参阅此问题开头的简短回答。

    基本上,一个Java interface 允许我们描述一组方法及其确切的签名,但不允许我们提供实现。因此,它是一个纯接口;它不能被直接调用。它只描述 如何与 实际实现它的类。(双方不一定必须是“父”和“子”。)

    理想情况下,接口不应该只说明一个类所提供的内容;它还应该描述一个典型的消费者将需要什么,从而在一个封装良好的系统中保持界面的重点。(我指的是 Single-Responsibility Principle 此处。)

        2
  •  1
  •   Rahul Tripathi    11 年前

    接口是一个抽象和封装的概念。这基本上是一个你应该遵守或给予的合同,即接口只是双方之间的一个合同,这样他们就知道他们将如何相互作用。接口通常定义如何与类交互,以及它所支持的方法。

    接口只包含方法的签名。方法没有任何东西,接口也不能做任何事情。这只是一种模式。

    enter image description here

    现在,在这个例子中,AbstractMethod()是定义的接口,它只有签名,但没有实现。现在,当类ASubClass实现ineterface时,就会向接口提供实际的实现。

    就图形用户界面而言,我认为这不一定是面向对象编程。这个 wiki 说图形用户界面只是一个用户界面,通过它你可以通过图标和其他指示器与电子设备进行交互。

    enter image description here

    这个 Java doc 已经给出了一个很好的例子:-

    方法形成了对象与外部世界的接口;这个 例如,电视机正面的按钮是 你和另一侧电线之间的接口 其塑料外壳。按下“电源”按钮 电视开关。

    一个很好的例子 here :-

    接口是对对象可以执行的操作的描述。。。 例如,当你拨动电灯开关时,灯亮了,你没有 不管怎样,只要它确实如此。 在面向对象编程中 接口是对对象必须具有的所有功能的描述 为了成为“X” 。再次举个例子,任何“表现得像”的东西 一个灯光,应该有一个turn_on()方法和一个turn-off()方法。这个 接口的目的是允许计算机执行这些 财产并了解TYPE T对象(无论 接口is)必须具有称为X、Y、Z等的函数。

    您也可以检查 Why Use Interfaces?

    另一种强大的设计技术是使用单个类实现 多个接口。如果您这样做,您将拥有 支持多个接口,因此支持多种行为。什么时候 与运行时类型检查一起使用,这变得非常 强大的

        3
  •  0
  •   Daniel T.    11 年前

    在OOP中,术语“接口”基本上意味着可以发送到类的对象的所有消息的所有方法签名。因此,在Objective-C中,它将是头文件中的所有方法声明。

    术语“图形用户界面”不是在OO上下文中使用“界面”一词。 列表中的第2项是OO接口。 项目#3指的是.h和.m文件。 第4项是指Java语言中的关键字“interface”,并将其等同于objective-C语言中的关键词“protocol”。

        4
  •  -1
  •   Deception Deception    11 年前

    一般含义:

    接口本质上是与其他东西交互的东西

    例如:一个界面可以是一个python应用程序和Skype API(想想都想不到xD)

        5
  •  -1
  •   Alec Teal    11 年前

    接口是多重继承的一种形式(没有所谓的复杂情况)(这是一个有争议的话题)

    OO建立在“是”关系的基础上,MI(多重继承)允许一个对象是几个东西。接口定义了一种使它们成为这些东西的方式,而不需要实现。

    它们是“你必须做的”_ 成为_ 不管怎样”。