java - 接口(interface)定义的关系的术语

标签 java .net oop interface terminology

如果继承是用于实现is-a 关系的 OO 技术,而组合/聚合实现了has-a 关系,则实现的关系的适当名称是什么通过 Java/.NET 风格的界面是什么?

我非常喜欢can-do 关系这个术语,因为这样的接口(interface)通常用于指定支持的操作,例如SortableClonable 等加上这听起来确实是肯定的。我真正看到的唯一想到的名字是意识到关系,但它并没有真正描述那么多。

最佳答案

在大多数面向对象的编程语言中,接口(interface)和类都通过继承传递它们的关系,而继承是一种is-a关系,无论是接口(interface)、类、抽象类等。 ..

事实上,类本身就是一种接口(interface),它们也只是提供了一个实现。没有实现的抽象类和接口(interface)之间没有太大区别,尽管内部实现可能有一些差异。 (最大的问题是在 Java 和 .NET 中你不能继承多个抽象类)

所以从概念oop的角度来说,is-a就是继承。 has-a 是包含/组合/聚合/whateveryouwanttocallit,

术语“实现”更像是“继承”或“子类”的子类。你不能继承一个接口(interface),但你可以实现它。这是一个更详细的细节,尽管它具有特定的含义。

并非所有语言都有接口(interface)。例如,C++ 就没有。然而,你可以像我之前提到的那样用没有实现的抽象类来伪造它们,但是由于 C++ 允许多重继承,这个问题就不是什么大问题(只要它们是没有实现的纯抽象类,如果你开始混合编码到它们然后它变得更毛茸茸)

关于java - 接口(interface)定义的关系的术语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324076/

相关文章:

java - gwan 不重新编译 java 文件

java - 使用 while 循环检查任务何时完成时 GUI 被阻塞

java - 如何通过 Netbean Builder 将图像插入 Jtable

.net - Visual Studio 资源生成 - 自定义工具命名空间

c# - C#中的数组搜索抛出错误

c# - 将 VB.NET 代码转换为 C#

c++ - 为什么我不能在同一个代码行中创建和打开一个 ofstream?

c++ - 基类中的数据成员出现在派生类中是否会导致内存浪费?

java - 在 n 多边形的每条边上画一个圆

Ruby - 散列属性的 Setter 方法