【问题标题】:What is a class interface?什么是类接口?
【发布时间】:2010-11-04 13:21:28
【问题描述】:
我目前正在完成代码完成工作,并且不断弹出“界面”一词!我试图弄清楚接口是什么。你能定义这个词吗?还有什么实际上构成了“类接口”?
【问题讨论】:
标签:
language-agnostic
interface
duplicates
【解决方案1】:
我认为定义接口的好方法如下
接口是指定一组方法、字段和属性的契约,这些方法、字段和属性可用于任何实现对象
不同语言的实际实现可能有一些有趣的小差异,但原则是成立的。
我考虑将已实现的接口添加到上面的列表中,但因为它似乎有点过于特定于语言而放弃了它。我认为这没关系,因为最终效果几乎相同。添加更多接口只是在合约中添加更多方法、字段和属性。
【解决方案2】:
一般来说,接口就是“类对世界其他地方的看法”。
例如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 类型的对象,因为它实现了正确的接口。
【解决方案3】:
类的接口是其他类可以看到的“公众面孔”。它将类的实现与它与其他类交互的方式分开。这样就可以换出不同的实现,而其他类不需要知道接口背后的任何内容。
一个接口可以同时包含数据和函数成员。
【解决方案4】:
它是世界的外在。通常是它公开的一组公共方法(成员)。
从技术上讲,它们是两种不同的东西
接口将是一个公共合同。例如
interface ILogger
{
void Log(String str);
}
然后一个类会“实现”这个接口——在某种程度上说它提供了这个功能
class ConsoleLogger : ILogger
{
public ConsoleLogger() { ... }
public void Log(String str)
{
Console.WriteLine("Console Logger " + str);
}
// private stuff
}
此服务/接口的用户不必关心它是如何实现的或谁在实现它?通过依赖一个接口,可以随意切换实际的实现。
【解决方案5】:
接口是类可以实现的一组方法的定义。主要用于接口多态。
【解决方案7】:
接口有两个定义。这取决于术语接口在什么上下文中使用。
- 类接口是指类的所有实现的公共方法。
-
作为类型的接口。即使用关键字interface来声明一个接口。
interface Movable{
moveStraight();
moveLeft();
moveRight();
stop();
}
所以现在一个类,比方说,Car 可以实现接口 Movable。这就是所谓的合同。如果 Car 类实现了 Movable 接口,Car 保证为 Movables 中声明的所有方法提供实现
声明。
总而言之,通常在特定语言的编程上下文中将接口作为类型(定义 2)来寻址。通常在理论或设计环境中,您会在较少的情况下找到第一个定义。
【解决方案8】:
接口的经典现实生活示例是控制汽车。
休息、加油和车轮将是界面。
发动机和其他机械方面将是实施。
这些机械方面可以改变,我们不知道,因为我们的界面保持不变。
这是接口的力量,它隐藏了实现细节,因此我们可以在更高层次的抽象上工作。我们通常可以直接使用接口的功能,而不必担心它下面的代码是如何实现的。