c# - 在 OOP 中创建接口(interface)基础设施背后的哲学是什么?

标签 c# java oop interface

我相信我们出于某些原因发明了一些东西:OOP 的出现是因为过程式编程不能满足我们的需求; Interface 也是如此,因为其他 OOP 特性如 Abstract 不能满足我们的需求。

关于界面是什么可以做什么如何使用它的文章和指南很多,但是,我我想知道创建界面背后的实际哲学是什么?为什么我们需要接口(interface)?

最佳答案

从概念上讲,接口(interface)是一个契约。这是一种说法,任何实现此接口(interface)的东西都能够执行这些操作

不同的语言有不同的接口(interface)可以定义的东西,以及定义它们的不同方法,但这个概念仍然存在。

使用接口(interface)可以让您不关心如何某些特定任务是如何完成的;它让您只需确保它已完成。

通过允许不同的实现,并允许代码只定义它需要的最小子集,它允许您概括您的代码。

也许你想写一个方法在屏幕上写一个数字序列。您不想在任何(许多)其他常用数据结构上为数组、集合、树编写方法来执行此操作。您不需要关心您是在处理数组还是链表,您只需要某种方法来获取一系列项。接口(interface)允许您只定义所需的最小集合,比方说 getNextItem 方法,然后如果所有这些数据结构都实现该方法和接口(interface),则它们可以使用一个通用方法。这比为您要使用的每种类型的数据结构编写单独的方法要容易得多。 (这不是接口(interface)的唯一用途,只是一种常见的用途。)

关于c# - 在 OOP 中创建接口(interface)基础设施背后的哲学是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748287/

相关文章:

c# - ComboBox 在键入时更改文本颜色的事件

java - Spring Maven - 无法加载ApplicationContext NoSuchBeanDefinitionException : No qualifying bean of type

php - 带有动态属性名称的 isset()

asp.net - 您如何处理 JavaScript 对象中的 ASP.NET 服务器回调?

c# - 如何结合 Find() 和 AsNoTracking()?

c# - LINQ 仅当其中一个字段是特定值时才对多个字段进行分组

java - 是否只有 Apache Axis wsdl2Java 还是有其他库?

java - 如何从jsp页面获取id到servlet?

java - 初始化几个实现相同接口(interface)的不同类

c# - 邮件错误 :The SMTP server requires a secure connection or the client was not authenticated. 服务器响应为 : 5. 5.1 需要身份验证