Base のメソッドを直接呼び出す
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 中国語 Web サイトの他の関連記事を参照してください。