直接呼叫基底類別的方法
在 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中文網其他相關文章!