ホームページ >バックエンド開発 >C++ >中間オーバーライドをバイパスして、基本クラスのメソッドを直接呼び出す方法は?

中間オーバーライドをバイパスして、基本クラスのメソッドを直接呼び出す方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-01 12:14:10995ブラウズ

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

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。