12. 新しいメソッドのオーバーロード
PHP のメソッドをオーバーロードできないことがわかりますが、いわゆるメソッドのオーバーロードとは、同じメソッド名を定義して「異なるパラメータ」または「パラメータ」を渡すことです。 type" が異なるため、異なる名前で同じメソッドにアクセスします。ただし、PHP は弱い型指定言語であるため、メソッドのパラメーターでさまざまな種類のデータを受け取ることができ、PHP メソッドは無限の数のパラメーターを受け取ることができるため、異なる数のパラメーターを渡して呼び出すことはできません。同じメソッド名の異なるメソッドも無効です。したがって、PHP にはメソッドのオーバーロードはありません。オーバーロードすることはできません。つまり、プロジェクト内で同じメソッド名のメソッドを定義することはできません。また、PHP には名前サブスペースの概念がないため、同じページおよびインクルードされたページに同じ名前のメソッドを定義することはできません。また、PHP が提供するメソッドと同じ名前で定義することもできません。同じクラス内に同じ名前のメソッドを定義することはできません。
ここで新しいメソッドをオーバーロードするとはどういう意味ですか?実際、新しいメソッドのオーバーロードと呼ばれるものは、サブクラスが親クラスの既存のメソッドを上書きすることですが、なぜこれを行うのでしょうか?親クラスのメソッドを継承して直接使用することはできないのでしょうか?ただし、カバーしなければならない状況がいくつかあります。たとえば、前述の例では、人間の「person」に「speak」メソッドがあり、「person」クラスを継承するすべてのサブクラスが Can「speak」です。 、「Student」
クラスは「person」クラスのサブクラスであるため、「Student」のインスタンスは「話す」ことができますが、人間の「speak
talk」メソッドは「「person」クラスの属性、および「Student」クラスは「person」クラスを拡張し、いくつかの新しい属性を追加します。継承された「say()」スピーキングメソッドを使用する場合、「person」クラスから継承された属性を除いて、新しく拡張された属性は言うことができません。継承された「say()」メソッドを使用して説明する人もいます。私は「学生」です。「このサブクラスに発話用の新しいメソッドを定義してください。サブクラス内のすべての属性を発話するだけで十分ではないでしょうか?」抽象的な観点から言えば、「生徒」が 2 つの異なる「話し方」を定義したとしても、目的の「話し方」を実現することはできません。継承されたものは使用される機会がない可能性があり、継承されている場合は削除できません。
今回はカバレッジを使用します。
PHPでは同名のメソッドを定義することはできませんが、親子関係のある2つのクラスでは、サブクラスに親クラスと同じ名前のメソッドを定義することができます
ので、親クラスから継承したメソッドをオーバーライドすることができます。
コードスニペット
コードをコピー
コードは次のとおりです:
//「person」クラスを親クラスとして定義します
class person{
//以下はメンバー属性です。 person
var $name ; //人の名前
var $sex; //人の性別
var $age; //属性名に値を割り当てるコンストラクターパラメータを定義します $name,性別 $sex と年齢 $age
function __construct($name, $sex, $age){
$this->name=$name