我有一个子类,我定义了一个静态函数:
class functionover
{
function override($num1, $num2)
{
$total = $num1+$num2;
}
}
class childfunctionover extends functionover
{
static function override($num1, $num2)
{
$sum = $num1+$num2;
}
}
functionover :: override(10, 20);
当我运行程序时,它显示错误:
Cannot make non static method functionover::override() static in class childfunctionover
怎么回事?
答案 0 :(得分:2)
当我们讨论继承,扩展和重写方法时,PHP有点严格(那些不是函数!不要被function
关键字欺骗。)。
如果父有static
方法,那么您的覆盖只能 为static
。您无法将static
转换为non-static
。
这两种方式都有效。您无法将non-static
方法覆盖为static
个方法。这会违反许多继承规则。
当您覆盖方法时,规则如下:
static
或不调用)。 那些可能不适用的所有规则。有关更多信息,请转至Manual
将父方法更改为static
或从子方法中删除static
关键字。