最初に、両方のメソッドがコンストラクタの呼び出しを呼び出す理由が混乱していましたが、今は理解していると思います。拡張するクラスは、親クラスのメソッドをクラス自体で宣言されているかのように継承し、メソッドは親クラスに存在するので、両方とも機能するはずです。複数の方法で親メソッドをPHPで呼び出す
ここでは、メソッド呼び出し(parent
またはthis
)を使用する方法(つまりベストプラクティス)があるかどうか、これらが真に同じコードを実行する方法であるかどうかどちらか一方を使用する場合の注意点
申し訳ありませんが、私はおそらくこれを考えています。
abstract class Animal {
function get_species() {
echo "test";
}
}
class Dog extends Animal {
function __construct(){
$this->get_species();
parent::get_species();
}
}
$spike = new Dog;
私はそれを "伸ばす"なしでやるだろうか?私は親クラスの "人間"の機能は必要ないので、クラス "人間"の中にいくつかのクローズ "レッグ"がありますが、実際にはそれを拡張する必要はありません。今、私が '$ leg = new leg()'を 'human'の中に作成したら、足のインスタンス' $ leg'の内部から人間の関数をどう呼び出すことができますか? – user151496
@ user151496脚は人間のサブクラスではありません。人間は多くの脚を持っていますが、脚は人間の一種ではありません。したがって、脚は人間ではないので、人間から継承する脚のクラスを持つべきではありません。 – Beetle
LegをLeggyのインターフェイスを持つクラスにしますか?それとも人間のクラスがLeggyを実装しているのですか?どのようにして脚は人間に排他的ではなく、人間の脚は独特の人間であり、人間の一般的な性質であるということをどのように定義するのが最適でしょうか? – Anthony