考虑如下A类和B类:
Class A {
public function A1 (){
$this->A2();
}
public function A2 (){}
}
Class B extends A {
public function A2 () {} // overriding A2
}
$instance= new B ();
$instance -> A1(); // Calling A1 of class B which calls the parent class A1 actually
如您所见,B类覆盖功能A2。 从A类方法A1中调用A2
问题是它在A类中调用A2而不是在B类中调用A2。
如果我覆盖一个方法,即使从父类(A)方法调用它(当实际对象是覆盖(B)类的实例时),也会调用重写方法。
答案 0 :(得分:2)
我知道这不是一个答案,但我想说清楚,OP要求什么,并希望格式化代码。
Class A {
public function A1() {
echo "Class A, method A1 <br />";
$this->A2();
}
public function A2() {
echo "Class A, method A2 <br />";
}
}
Class B extends A {
public function A2() {
echo "Class B, method A2 <br />";
}
// overriding A2
}
$instance = new B ();
$instance->A1();
输出是:
Class A, method A1
Class B, method A2
要OP :您想要的输出是什么?