UML- 组合和继承同时进行

UML- Composition and Inheritance at Once

我正在为其他人的代码创建 UML 图,我遇到了一些奇怪的事情 - child class 有一个 parent class 作为它的成员变量之一,似乎既有“有”又有“是”的关系。 Apparently,这是故意的,但即使在阅读了 UML 指南之后,我仍然不知道如何表示它。我是否只显示继承,更强的关系?我是否要叠加箭头,创建一个带有一条线的纯白色箭头?

用 Java 中的 class 名字替换:

public abstract class A {
}

public abstract class B extends A {
    protected A a;
}

我该如何表示?

你有两个不同的关系,所以你只需同时显示它们

仅从代码来看,没有证据表明 B 和 A 之间的 Association 也是一个 Composition,因此我将其保留为普通关联。
这里有几个问题很好地解释了关联和组合之间的区别,例如 What is the difference between association, aggregation and composition?

两个类名都是斜体的事实表明它们都被声明为抽象