9

我目前正在通过代码完成工作,“界面”这个词不断弹出!我试图弄清楚接口是什么。你能定义这个词吗?还有什么实际上构成了“类接口”?

4

8 回答 8

11

我认为定义接口的好方法如下

接口是指定一组方法、字段和属性的合同,这些方法、字段和属性可用于任何实现对象

不同语言的实际实现可能有一些有趣的小差异,但原则是成立的。

我考虑将已实现的接口添加到上面的列表中,但因为它似乎有点过于特定于语言,所以将其搁置。我认为这没关系,因为最终效果几乎相同。添加更多接口只是在合约中添加更多方法、字段和属性。

于 2009-06-20T17:24:11.903 回答
11

一般来说,接口只是“类在世界其他地方的样子”。

例如,Java 中的这个类:

class MyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

可以说它的界面中只有Bar功能。在内部,它还有一些其他成员,但它们是私有的,因此外部世界看不到它们。

更常见的是,接口也是语言中的特定类型,例如下面的 MyClass 实现了 IMyClass 接口:

interface IMyClass {
  public void Bar(string s);
}

class MyClass implements IMyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}

该接口现在用代码表示,因此任何时候需要 IMyClass 类型的变量,都可以使用 MyClass 类型的对象,因为它实现了正确的接口。

于 2009-06-20T17:27:04.583 回答
2

类的接口是其他类可以看到的“公共面孔”。它将类的实现与它与其他类交互的方式分开。这样就可以换出不同的实现,并且其他类不需要知道接口背后的任何内容。

一个接口可以包括数据和函数成员。

于 2009-06-20T17:28:10.790 回答
1

它是世界的外部面孔。通常是它公开的一组公共方法(成员)。

但是从技术上讲,它们将是两件不同的事情

接口将是一个公共合约。例如

interface ILogger
{
  void Log(String str);
}

然后一个类将“实现”这个接口——在某种程度上说它提供了这个功能

class ConsoleLogger : ILogger
{
  public ConsoleLogger() { ... }
  public void Log(String str)
  {
    Console.WriteLine("Console Logger " + str);
  }
  // private stuff
}

此服务/接口的用户不必关心它是如何实现的或谁在实现它?通过依赖接口,可以随意切换实际的实现。

于 2009-06-20T17:23:09.267 回答
0

接口是类可以实现的一组方法的定义。它主要用于接口多态。

于 2009-06-20T17:25:30.623 回答
0

接口就像一个类,但不完全是。它具有类似于类的特征,但它不是接口。接口具有变量和方法,“就像类一样,但接口中声明的方法默认是抽象的(只有方法签名,没有主体)”。

http://beginnersbook.com/2013/05/java-interface/

于 2015-09-30T04:46:32.663 回答
0

接口有两个定义。这取决于在什么上下文中使用术语接口。

  1. 类接口是指一个类的所有实现的公共方法。
  2. 接口作为类型。即使用关键字interface 来声明一个接口。

    interface Movable{ 
        moveStraight();
        moveLeft();
        moveRight();
        stop();
    }
    

    所以现在一个类,比方说,Car 可以实现接口 Movable。这就是所谓的合同。如果 Car 类实现了 Movable 接口,Car 保证为 Movables 声明中声明的所有方法提供实现。

总而言之,通常接口在特定语言的编程上下文中被称为类型(定义 2)。通常在理论或设计环境中,您会在较少的情况下找到第一个定义。

于 2016-08-24T10:46:52.090 回答
0

接口的经典现实生活示例是控制汽车。

休息、加油和车轮将是界面。发动机和其他机械方面将是实施。这些机械方面可以改变,我们不知道,因为我们的界面保持不变。

这就是接口的力量,它隐藏了实现细节,因此我们可以在更高层次的抽象上工作。我们通常可以直接使用接口的功能,而不用担心它下面的代码是如何实现的。

于 2017-05-25T00:30:07.213 回答