我有一个名为 A 的父类(super class)和一个继承自 A 的名为 B 的子类。父类(super class)的构造函数如下所示:
A(String name, char displayChar, int hitPoints, Behaviour behaviour)
{
this.name = name;
this.displayChar = displayChar;
this.hitPoints = hitPoints
addBehaviour(behaviour);
}
A 具有 name、displayChar、hitPoints、behaviour 属性,并具有调用 addBehaviour 的方法,该方法将行为添加到对象。
子类B的构造函数如下所示:
B(String name) {super(name, char 'b', 10, new WalkBehaviour()); }
现在我的问题是,子类B是否有WalkBehaviour的属性?
对于这种情况,UML 图会是什么样子?我知道 B 继承自 A 并且 A 有Behavior,但是在这种情况下 B 有 WalkBehaviour 吗?由于 B 在其类中没有 WalkBehaviour 类型的实例变量,而仅通过其父类(super class)的构造函数传递 WalkBehaviour。
最佳答案
does subclass B have an attribute of WalkBehaviour?
没有。没有任何声明。父类(super class)将对这个新对象执行一些操作,但显然它隐藏在其实现的迷雾中。
继承并不涉及多个对象的创建。您的 B
实例只是一个单独的实例,它具有与其父类(super class)一样的属性和操作。
因此,在 SD 中,您只会看到 B
的一条生命线:
如您所见,B
实例只会向父类(super class)的构造函数发出自调用。
注意:正如 @AxelScheithauer 在评论中指出的那样,父类(super class)将调用 addBehavior
,它可以(但不得)显示在 SD 中:
关于uml - 如何绘制通过 super 构造函数传递参数的UML图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55718538/