java - 构造函数中带有 super 的 UML 类图

标签 java class oop uml class-diagram

public class A{
    public A(int num){ num += 2;}
}

public class B Extends A{
    public B(int num){ super(num);}
}

public class C Extends B{
    public C(int num){ super(num);}
}

像这样的 UML 类图会是什么样子?通常,如果只有一个类从另一个类继承,那么我会使用泛化。我该如何应对?如果有示例图就太好了。

最佳答案

  • 在 UML 中,您不需要在子级中重复相同的构造函数。他们默认从 parent 那里得到它。不过,这不必在所有语言中都相同。因此,您在 Java 中拥有这些子构造函数,但无需在 UML 中显示它们。但你当然可以做到。
  • A() 的主体毫无意义。您正在更改输入参数,这不会产生任何后果。我想,你的意思是:
<小时/>
 public class A{
    int num;
    public A(int num){ 
        this.num = num+2;
    }
 }
<小时/>

无论如何,这个变化在类图上是不可见的

enter image description here

一个类(class)甚至可以轻松拥有两个 child ,无论使用任何语言,都不是问题。对于几代泛化来说也是如此。在 UML 中,您甚至可以有一个 child 的两个 parent 。但只有少数语言支持这一点。 Java 不在他们的范围内。

关于java - 构造函数中带有 super 的 UML 类图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21949920/

相关文章:

使用两个类对分数进行算术运算的 Java 程序

c++ - 单例模式与工厂模式的争议

java - Hibernate DefaultEntityAliases 引发 NullPointerException

java - 记录器 slf4j 未使用配置的 logback 级别

java - 通过 API 而不是使用 GFSH 创建 Gemfire 区域

java - 在线程上调用方法 - 它可以工作,但为什么呢?

c# - 为什么不能从静态方法中调用非静态方法?

c++ - 构造函数的显式关键字的使用

php - 当 Controller 类扩展父 Controller 时,为什么我们仍然需要父构造函数?

Python,我如何定义一个对象 O 使得 func(O) = func(O.val) 对于任何 func