私は継承の問題があります。私は親クラスAと、Aからの派生クラスBと、Aからの派生クラスCをもう一度考えてみましょう。PHP OOP継承問題
は、クラスAからの両方のオーバーライドメソッドの種子は()も)全て(seedAll静的関数を実装& & B CをclasesクラスB & C、のように言ってみましょう。
私の質問は次のとおりです。将来的には、私はクラスB & Cに似たクラスDを持つべきであるように、どのように私は、明示的にクラスB & Cを指定せずにseedAll関数からseedAll B & Cのために呼ぶのですか、私はクラスBのseedAll機能を呼び出すために、クラスAのseedAll機能を変更する必要はありません、C & D.
abstract class A
{
public static function seedAll() {
//How do I call seedAll of all the derived classes of Seeder?
}
abstract protected function seed();
// // Common method
// public function printOut() {
// print $this->getValue() . "\n";
// }
}
class B extends A
{
private $name;
function __construct($name) {
$this->name = $name;
}
public static function seedAll() {
$seeder1 = new B("name1");
$seeder1 = new B("name2");
}
function seed() {
echo $this->name;
}
}
class C extends A
{
private $name;
function __construct($name) {
$this->name = $name;
}
public static function seedAll() {
$seeder1 = new C("name1");
$seeder1 = new C("name2");
}
function seed() {
echo $this->name;
}
}
それはあなたがからそれを呼び出しているどのオブジェクトに依存する場合には、静的メソッドではありません。 – Barmar
静的メソッド、基本クラスの静的メソッド、または派生クラスの静的メソッドではいけないものはどれですか?あなたはもっと明確になりますか? – Hirvesh
'seed()'メソッドはこれにどのように関連していますか?コードを表示することができますか、どのような結果を得ようとしていますか? – Barmar