我已经在OOPS中实现了方法覆盖,但我不确定如何在PHP中实现方法覆盖。当您创建具有相同名称的函数时,它将为您提供有关函数重新声明的错误。
答案 0 :(得分:3)
PHP中的方法覆盖实际上非常简单。您只需指定基类,然后在派生类中创建一个具有相同名称的方法(函数)。
class BaseClass {
public function first_method() {
echo("Hello! I am the base!\n");
}
public function do_something() {
echo("Hi, there! I am the base!\n");
}
}
class AnotherClass extends BaseClass {
public function do_something() {
echo("Hi, there! I am a derivative!\n");
}
}
$base_class = new BaseClass();
$another_class = new AnotherClass();
$base_class->do_something();
$another_class->do_something();
$another_class->first_method();
编辑以涵盖方法重载的可能问题: - )
如果您打算询问方法重载,那么您应该知道它无法在PHP中完成。还有另一个功能最终会给你相同的结果:默认参数。以下是适用于这两种方法和功能的潜在用例:
function first_function($a, $b=NULL) {
echo($a);
if($b!==NULL) {
echo($b);
}
}
这与两个名为first_function
的函数(例如在C ++中)基本相同,其中每个函数都有不同数量的参数,如下所示:
void first_function(int a) {
cout << a << endl;
}
void first_function(int a, int b) {
cout << a << endl;
cout << b << endl;
}
避免传统方法重载更有意义,因为PHP是一种松散类型的语言。使用具有相同数量的参数的两个函数结束将导致死胡同,因为PHP解释器无法确定您要调用这两个函数中的哪一个,因为PHP中没有类型敏感性。