我有一个继承问题。考虑我有一个父类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