直接调用基类的方法
在 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中文网其他相关文章!