は、同じクラス内で同じ名前で定義できないメソッドを含め、PHP で同じ名前の関数を定義できません。したがって、メソッドのオーバーロードはありません。親クラスのメソッドはサブクラスにすでに存在するため、親クラスと同じ名前のメソッドをサブクラスのみに定義できます。そのため、親クラスから継承したメソッドをサブクラスでオーバーライドできます。
親クラスをサブクラスでオーバーライドする方法は、親クラスから継承したメソッドをサブクラスで上書きするというものですが、親クラスのメソッドをサブクラスで継承するとそのまま使用できないのでしょうか?なぜ過負荷にする必要があるのでしょうか?カバーしなければならない状況がいくつかあるからです。たとえば、「Bird」クラスがあり、このクラスには鳥の一般的なメソッド「Fly」が定義されています。 「ostrich」クラスをサブクラスにすると「flying」メソッドが継承されますが、「ostrich」クラスの「flying」メソッドを呼び出すとすぐにダチョウは飛び去ってしまいます。ダチョウは飛べませんが、他の特性は「鳥」の特性を持っています。そのため、「ダチョウ」クラスを宣言する場合でも「鳥」クラスを継承できますが、「ダチョウ」クラスに「鳥」クラスを追加する必要があります。 . クラスから継承した「フライング」メソッドを書き換えるには、親クラスのメソッドをサブクラスでオーバーロードする必要があります。
次の例では、宣言された Person クラスに「speak」メソッドがあり、Student クラスが Person クラスを継承すると、「speak」メソッドを直接使用できます。ただし、Person クラスの「speak」メソッドは独自のメンバー属性のみを話すことができますが、Student クラスは Person クラスを拡張し、いくつかの新しいメンバー属性を追加します。コードは次のようになります:
変更したプログラムを実行した後の出力結果は次のとおりです:
私の名前:Zhang San、性別:男性、年齢:20歳、教育学校で勉強しています
PHPでは、サブクラスのオーバーロードメソッド内で親クラスのオーバーライドメソッドを呼び出す機能が提供されています。このように、サブクラスによってオーバーライドされたメソッドでは、親クラスから継承されてオーバーライドされたメソッドを引き続き使用し、必要に応じて新しい関数を追加できます。呼び出しの形式は、「親:メソッド名」を使用して、親クラスのオーバーライドされたメソッドをサブクラスのオーバーロードされたメソッドで呼び出します。上記の例のコードを変更し、サブクラスのオーバーライドされたコンストラクターで「parent::__construct()」を使用して親クラスのオーバーライドされたコンストラクターを呼び出し、サブクラスの新しく拡張されたメンバーのメンバー属性を追加します。コード。サブクラスでオーバーライドされたsay()メソッドの「parent::say()」を使用して、親クラスでオーバーライドされたsay()メソッドを呼び出し、サブクラスのメンバー属性を出力する機能を追加します。
コードは次のとおりです:
上記の例の出力結果は前の例と同じですが、この場合、親クラスでオーバーライドされたメソッドをサブクラスで直接呼び出す方がはるかに簡単です。また、サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスでオーバーライドされるメソッドのアクセス権限が、親クラスのオーバーライドされるメソッドのアクセス権限よりも低くてはいけないことに注意する必要があります。たとえば、親クラスのアクセス権限が保護されている場合、子クラスでオーバーライドされるメソッドの権限は保護またはパブリックにする必要があります。
上記の内容は、エディターが紹介したPHPの親クラスをオーバーロードするサブクラスのメソッド[親::メソッド名]の関連内容です。さらに詳しい情報を知りたい場合は、Bangkejia のウェブサイトに注目してください。