php抽象类扩展另一个抽象类
在PHP中,抽象类是否可能从抽象类继承 比如说,php抽象类扩展另一个抽象类,php,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
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(); }
}
(不回答)是的,这是可能的
如果子类没有实现抽象超类的所有抽象方法,那么它也必须是抽象的。是的,但是如果调用
$VeryConcreteObject->b()
更详细的解释。即使您离开抽象函数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(); }
}
在这里询问之前,你真的运行过代码吗?@Jakub我想这是可能的,就我所知是的。它不起作用。因为。。。
抽象公共函数b()代码>在第二个类中。没有它,它就会消失。问题回答:你为什么不使用接口和traits@ied3vil发布问题时,PHP中尚未提供Traits代码>在第二个类中它工作。。。回答说,谢谢,但定义的顺序很重要。如果将类VeryConcrete放在第一位,则会出现“致命错误:类”MoreCreate“找不到”错误。小心不要本末倒置。