Language agnostic 什么是类接口?

Language agnostic 什么是类接口?,language-agnostic,interface,duplicates,Language Agnostic,Interface,Duplicates,我目前正在努力完成代码,而“接口”一词不断出现!我想弄清楚什么是界面。你能给这个词下个定义吗?还有,究竟是什么构成了“类接口”?它是面向世界的外部面孔。通常是它公开的一组公共方法(成员) 但从技术上讲,它们是两种不同的东西 接口将是一个公共合同。e、 g interface ILogger { void Log(String str); } 然后,一个类将“实现”这个接口——在某种程度上说它提供了这个功能 class ConsoleLogger : ILogger { public C

我目前正在努力完成代码,而“接口”一词不断出现!我想弄清楚什么是界面。你能给这个词下个定义吗?还有,究竟是什么构成了“类接口”?它是面向世界的外部面孔。通常是它公开的一组公共方法(成员)

但从技术上讲,它们是两种不同的东西

接口将是一个公共合同。e、 g

interface ILogger
{
  void Log(String str);
}
然后,一个类将“实现”这个接口——在某种程度上说它提供了这个功能

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

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

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

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

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


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

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

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

例如,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类型的对象,因为它实现了正确的接口。

类的接口是其他类可以看到的“公共面”。它将类的实现与它与其他类交互的方式分开。通过这种方式,不同的实现可以交换出去,而其他类不需要知道接口背后的内容


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

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


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

  • 类接口是指类的所有实现的公共方法
  • 作为类型的接口。i、 e使用关键字interface来声明接口

    interface Movable{ 
        moveStraight();
        moveLeft();
        moveRight();
        stop();
    }
    
    所以现在有一个类,比如说,Car可以实现可移动的接口。这就是所谓的合同。如果类Car实现接口Movable,Car保证为Movables中声明的所有方法提供实现 声明


  • 总之,在特定于语言的编程上下文中,接口通常作为类型(定义2)进行处理。通常在理论或设计环境中,您会在较少的场合找到第一个定义

    接口的经典现实例子是汽车的控制

    刹车、油门和车轮将是接口。 引擎和其他机械方面将是实现。 这些机械方面可以改变,我们不知道,因为我们的界面保持不变


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

    谢谢大家的回答。我现在明白这个词了。也有很多有用的信息。