首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现两个类之间的类关系,其中一个类可以执行另一个类的所有功能,但实际上不是一个子类?

如何实现两个类之间的类关系,其中一个类可以执行另一个类的所有功能,但实际上不是一个子类?
EN

Stack Overflow用户
提问于 2017-11-04 13:21:17
回答 2查看 154关注 0票数 0

我正在创建一个学生信息系统,它将有两个访问级别,即管理员和经理。Admin类可以执行Manager类的所有功能以及一些附加功能。但从字面上讲,管理员不是经理。那么,我应该如何实现这种关系呢?是否可以使用Admin extends Manager,或者是否有其他方法来实现此功能?(我将使用java来实现系统)

EN

回答 2

Stack Overflow用户

发布于 2017-11-04 16:33:29

嗯,UML提供了3种机制来描述类之间的(一些)相似性。

  1. Generalization
  2. Interfaces
  3. Substitution

让我们仔细看看它们:

泛化

当两个类具有泛化关系时,其中一个类(子类、专门类或子类)是另一个类(超类、一般类或父类)的一种。子类拥有父类的所有属性和方法(继承它们),可以有一些额外的属性或方法,并且可以在不同的情况下处理一些方法。概括是用一条实线和一个箭头来描述的,箭头的头部是一个空三角形。Head指向更通用的类

接口

实际上,接口并不是两个在某种程度上相似的类之间的直接关系。但它们在一定程度上有助于显示这一点。接口是一种特定类型的类,它具有一组方法。接口不是直接实例化的,但是其他类可以实现该接口,或者需要一个接口。如果一个类实现了一个接口(换句话说,它提供了一个接口),那么它必须拥有一个接口的所有方法,但是接口不会强制执行一个实现方法。因此,我们可能有两个(或更多)实现相同接口的类,然后这两个类将能够执行相同的功能,但这可能是一种完全不同的方式。我们用一条虚线和一个空三角形的箭头来表示接口的实现。需要接口的类是与提供接口的类交互的类。为了显示接口的用法,您可以使用带有开放箭头和构造型<<use>>的虚线(从技术上讲,它不是构造型)。

替换

类替换用于表明一个类可以替代另一个类的角色,但它不是该类的一种。替换类必须具有它所替换的类的所有方法,但它可能具有不同的内部表示。当两个或多个类可以执行类似的角色,但它们不属于同一类型时,就会使用这种关系。替换关系显示为一条虚线,其中带有指向可替换类的开放箭头和一个构造型<<substitute>>

您的情况是替换,其中Admin可以替换Manager,但是您可以将替换与接口相结合以使其更清晰。此外,一定要确保文档的接收者能够理解您将要使用的元素模型。

票数 3
EN

Stack Overflow用户

发布于 2017-11-04 13:59:35

只需使用Admin和Manager共享的方法创建一个父类即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47107706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档