この記事では、PHP 継承におけるメソッドのオーバーロード (上書き) の適用シナリオを分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
メソッドのオーバーロード (オーバーライド)/上書き - どのような状況で使用されるか: すべてのサブクラスがメソッドを使用する必要があることを親クラスが知っているが、親クラスがこのメソッドの記述方法を知らない場合、メソッドが必要になります。現時点では、サブクラスでこのメソッドをオーバーライドすることができます。
人気のある例 - 親クラス (動物) は、そのサブクラス (猫と犬) が吠えることを知っていますが、その鳴き声は異なるため、親クラスはこのメソッドを作成できず、サブクラス (猫と犬) にのみ定義させることができます。 。コードは次のとおりです:
メソッドのオーバーロード/オーバーライドのキーポイントと詳細 (少し読みにくいです):
1. サブクラスメソッドのメソッド名とパラメータリストは、親クラスメソッドとまったく同じである必要があります。たとえば、例のcry()はパラメータを追加できないため、cry($naaa)などに変更します。注: ここではパラメータ名が同じである必要はありませんが、パラメータの数は同じである必要があります。
2. いわゆるオーバーロードまたは上書きは、親クラスのメソッドを上書きすることを意味するものではありません。これは、次のように理解することもできます。サブクラスがこのメソッドを呼び出し、そのメソッド自体のクラスでこのメソッドが見つからない場合、そのようなメソッドがあるかどうかを確認するために親クラスに移動します。これもポリモーフィックな理解です
3. サブクラスのメソッドが親クラスの同名のメソッドの内容を継承したい場合は、親::メソッド名または親クラス名::メソッド名を使用して継承できます。サブクラスによって定義されたメソッド内で使用されます。
4. アクセス許可の問題。サブクラスのアクセス スコープ >= 親クラスのアクセス スコープ。つまり、親クラスが保護された関数 cry() の場合、サブクラスは保護またはパブリックのみにできます。
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。