UML中的纯虚拟方法是什么?

UML中的纯虚拟方法是什么?,uml,Uml,我试图理解如何在UML中使用接口的实现和抽象类的实现。我在上看到了一篇文章,海报上说纯虚拟方法是接口,而部分纯虚拟方法是抽象类。有人能给我一个真实的场景而不是基于代码的场景吗?接口只是库用户可以扩展的“类框架”,正如您所说,方法无法实现。抽象类可以有实现的方法。我将给你一个真实的例子: 想象一下,我为人们提供了一个接口来实现排序功能,我还提供了一个用于基准排序功能的类。我的基准类只需要知道它需要调用接口的哪些方法来执行基准,它不知道它们是如何实现的。因此,在基准类中,您可能只看到类似于sortI

我试图理解如何在UML中使用接口的实现和抽象类的实现。我在上看到了一篇文章,海报上说纯虚拟方法是接口,而部分纯虚拟方法是抽象类。有人能给我一个真实的场景而不是基于代码的场景吗?

接口只是库用户可以扩展的“类框架”,正如您所说,方法无法实现。抽象类可以有实现的方法。我将给你一个真实的例子:

想象一下,我为人们提供了一个接口来实现排序功能,我还提供了一个用于基准排序功能的类。我的基准类只需要知道它需要调用接口的哪些方法来执行基准,它不知道它们是如何实现的。因此,在基准类中,您可能只看到类似于
sortInterface instance.getNumberOfSwap()
的内容,而
sortInterface实例
在编译时只属于
sortInterface
类型,而不属于任何特定的用户排序实现

如果您需要实现的方法,请使用抽象而不是接口。

接口只是库用户要扩展的“类骨架”,正如您所说,方法无法实现。抽象类可以有实现的方法。我将给你一个真实的例子:

想象一下,我为人们提供了一个接口来实现排序功能,我还提供了一个用于基准排序功能的类。我的基准类只需要知道它需要调用接口的哪些方法来执行基准,它不知道它们是如何实现的。因此,在基准类中,您可能只看到类似于
sortInterface instance.getNumberOfSwap()
的内容,而
sortInterface实例
在编译时只属于
sortInterface
类型,而不属于任何特定的用户排序实现


如果您需要实现的方法,请使用抽象而不是接口。

接口只描述如何使用某些东西,它不提供如何实现的底层实现,即只包含纯虚拟函数的类。英语中接口的比喻可以是形容词

接口的一个示例是可移动接口。这个接口可以提供一个纯虚拟函数move,它告诉对象移动到给定的位置。然而,它如何在那里移动还没有实现

另一方面,抽象类与接口的不同之处在于它提供了一些实现细节,但不是全部。这些都是概念上的高级项目,可以通过某些方式进行操作,但当你深入到它时,高级项目本身并不存在或没有意义


例如,假设我们有一个抽象的Shape类。形状可以有特定的原点,可以独立于形状进行跟踪。转换形状的函数可以在shape类中声明和实现,省去了在每个子类中提供相同实现的麻烦。但是,当您试图获取形状的面积或周长时,如果不了解形状的更多信息,就很难回答这个问题。

接口只描述如何使用某些东西,而不提供如何完成的基本实现,即仅具有纯虚函数的类。英语中接口的比喻可以是形容词

接口的一个示例是可移动接口。这个接口可以提供一个纯虚拟函数move,它告诉对象移动到给定的位置。然而,它如何在那里移动还没有实现

另一方面,抽象类与接口的不同之处在于它提供了一些实现细节,但不是全部。这些都是概念上的高级项目,可以通过某些方式进行操作,但当你深入到它时,高级项目本身并不存在或没有意义


例如,假设我们有一个抽象的Shape类。形状可以有特定的原点,可以独立于形状进行跟踪。转换形状的函数可以在shape类中声明和实现,省去了在每个子类中提供相同实现的麻烦。但是,当您试图获取形状的面积或周长时,在不了解形状的情况下很难回答此问题。

代码是真实的;任何创建UML图的尝试几乎肯定都会产生代码,除非UML图只是一个探索性的练习。@Robert Harvey-在我的世界里,它主要是探索性的。代码是真实世界的;任何试图创建UML图的尝试几乎肯定都会产生代码,除非UML图只是一个探索性的练习。@Robert Harvey-在我的世界里,它主要是探索性的。谢谢,但这只是我的想法。你能给我举一个简单的例子吗?例如汽车和它的司机或语言,以及它是如何说的,例如英语、法语等?谢谢,但我刚刚忘记了。你能给我举一个简单的例子吗?例如汽车和它的司机或语言,以及它是如何说的,例如英语、法语等?谢谢,但我没有学你的例子。如果你能举一些基本的例子,例如汽车和它的司机,你会很感激的。界面是汽车的蓝图。抽象类是一个没有马达和驱动器的汽车。如果你遵循界面(蓝图),你可以建造自己的汽车。如果你把一个马达放在汽车里(用一些子类扩展抽象类),如果你把一个司机放在那里(实例化所说的子类),那么你就有一个司机在驾驶汽车。你不能驾驶蓝图,也不能驾驶未完工的汽车。您只能驾驶成品车(通过扩展抽象类或实现接口)。