首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以从父类中调用子类中的重写方法?

是否可以从父类中调用子类中的重写方法?
EN

Stack Overflow用户
提问于 2019-05-10 02:53:04
回答 2查看 75关注 0票数 0

假设我们有一个父类A和一个继承它的子类B。A有被B覆盖的方法m(),让我们假设我们有第三个类C,它对类A具有调用依赖关系。C有可能在UML2中从类B调用覆盖方法m()吗?

EN

回答 2

Stack Overflow用户

发布于 2019-05-10 03:05:44

这显然取决于您使用的语言。就我个人而言,我不知道有哪种语言允许这样做。相反,您可能(通常)在B中有一个操作,它提供B的超类方法的纯功能:

调用序列可能如下所示

票数 0
EN

Stack Overflow用户

发布于 2019-05-10 03:11:59

是的,在UML2和大多数面向对象编程语言中,如C++、C#和Java,C执行调用B的方法m的行为是可能的。

在UML方面,如果你有这个类图:

那么这是一个有效的序列图:

方法callM是这样实现的,它调用p.m()。当您调用callM时,您可以传递类型B的实际参数,因为它与类型A的形参p兼容。p.m()的效果将是调用B中被覆盖的方法m。这也称为多态性。

代码语言:javascript
复制
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

有关更多示例,请参阅click here for online study material

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

https://stackoverflow.com/questions/56065880

复制
相关文章

相似问题

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