什么是类接口?

9 language-agnostic interface duplicates

我目前正在通过代码完成工作,"界面"一词不断弹出!我试图了解界面是什么.你能定义这个词吗?实际构成"类接口"的是什么?

Jar*_*Par 10

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

接口是指定一组方法,字段和属性的契约,这些方法,字段和属性将在任何实现对象上可用

从语言到语言的实际实现可能有一些有趣的差异,但原则仍然存在.

我考虑过将实现的接口添加到上面的列表中但是将其关闭,因为它似乎有点过于语言特定.我认为这是可以的,因为最终效果几乎相同.处理更多接口只是为合同添加更多方法,字段和属性.


jal*_*alf 10

一般来说,界面只是"类似于世界其他地方的样子".

例如,Java中的这个类:

class MyClass {
  private string data;
  private string Foo() {...}
  public void Bar(string s){...}
}
Run Code Online (Sandbox Code Playgroud)

可以说在其界面中只有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){...}
}
Run Code Online (Sandbox Code Playgroud)

接口现在用代码表示,因此每当期望IMyClass类型的变量时,就可以使用MyClass类型的对象,因为它实现了正确的接口.