我有一個繼承問題。考慮我有一個父類A和一個來自A的派生類B以及一個來自A的派生類C。PHP OOP繼承問題
比方說,從A類B類&下,兩個覆蓋方法種子()也clases一個&乙& C中的所有實現一個靜態函數seedAll()。
我的問題是:我如何打電話seedAll對於B & C來自A的seedAll功能,無需顯式指定B類& C,因此,在未來,我應該有類似於B類&下的類d ,我不需要修改類A的seedAll函數來調用類B的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