首页 > 后端开发 > C++ > 如何绕过中间重写直接调用基类方法?

如何绕过中间重写直接调用基类方法?

Patricia Arquette
发布: 2025-01-01 12:14:10
原创
984 人浏览过

How to Call a Base Class Method Directly, Bypassing Intermediate Overrides?

直接调用基类的方法

在 OOP 中,在派生类中访问基类方法对于方法重写至关重要。然而,问题出现了:“我们怎样才能绕过任何中间重写来调用基类的基方法?”

为了避免对 SpecialDerived 类中的 Derived.Say() 进行不必要的调用,原始源代码不能是修改的。但是,存在一种解决方法。通过在 Derived 类中引入新方法 CustomSay() 并在 SpecialDerived 中重写它,我们可以在保留现有 Say() 方法的同时重定向默认行为。

以下是修改后的代码:

// Cannot change source code
class Derived : Base
{
    public override void Say()
    {
        CustomSay();

        base.Say();
    }

    protected virtual void CustomSay()
    {
        Console.WriteLine("Called from Derived.");
    }
}

class SpecialDerived : Derived
{
    protected override void CustomSay()
    {
        Console.WriteLine("Called from Special Derived.");
    }
}
登录后复制

现在,当调用 sd.Say() 时,结果将be:

Called from Special Derived.
Called from Base.
登录后复制

使用新方法 CustomSay() 允许进行自定义,而无需修改重写的 Say() 方法。然而,通常不鼓励访问第一级之外的基本方法,因为它可能会造成混乱和维护问题。

以上是如何绕过中间重写直接调用基类方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板