php抽象类扩展另一个抽象类

时间:2011-09-01 11:27:45

标签: php

在PHP中,抽象类是否可以从抽象类继承?

例如,

abstract class Generic {
    abstract public function a();
    abstract public function b();
}

abstract class MoreConcrete extends Generic {
    public function a() { do_stuff(); }
    abstract public function b(); // I want this not to be implemented here...
}

class VeryConcrete extends MoreConcrete {
    public function b() { do_stuff(); }

}

abstract class extends abstract class in php?没有给出答案)

3 个答案:

答案 0 :(得分:39)

是的,这是可能的。

如果子类没有实现抽象超类的所有抽象方法,那么它也必须是抽象的。

答案 1 :(得分:5)

是的,如果您拨打$VeryConcreteObject->b()

,则可能无法使用您的代码

Here是更详细的解释。

答案 2 :(得分:3)

即使你留下抽象函数b(),它也会起作用;在课堂上更多混凝土。

但是在这个具体的例子中,我会将“Generic”类转换为一个接口,因为除了方法定义之外它没有更多的实现。

interface Generic {
    public function a(); 
    public function b();
}

abstract class MoreConcrete implements Generic {
    public function a() { do_stuff(); }
    // can be left out, as the class is defined abstract
    // abstract public function b();
}

class VeryConcrete extends MoreConcrete {
    // this class has to implement the method b() as it is not abstract.
    public function b() { do_stuff(); }
}