假设我们有一个父类A和一个子类B继承自它。 A具有被B覆盖的方法m()。还假设我们有第三类C,它具有对类A的调用依赖关系。C是否有可能在UML2中从类B调用覆盖方法m()? ?
答案 0 :(得分:0)
这显然取决于您使用的语言。我个人不知道允许使用这种语言的任何语言。相反,您可能(通常)在B
中进行了一项操作,该操作提供了B
的superclass'方法的纯功能:
https://euidp.aholddelhaize.com/pkmslogin.form
呼叫顺序可能类似于
答案 1 :(得分:0)
是的,在UML2和大多数OO编程语言(如C ++,C#和Java)中,C可能执行调用B的方法m的行为。
就UML而言,如果您具有此类图:
这是一个有效的时序图:
方法callM
被实现为调用p.m()
。调用callM
时,您可以传递类型B的实际参数,因为它与类型A的形式参数p兼容。p.m()
的作用是使B中的重写方法m为叫。这也称为多态性。
class A {
public m();
}
class B extends A {
public m();
}
class C {
public callM ( p : A ) {
p.m(); // calls either A::m or B::m, depending on actual type of p
}
}
b = new B;
c = new C;
c.callM(b); // let c call method m of class B