PHP OOP - 如何调用子类的重写方法


PHP OOP - how to call the overriding method of the child class

考虑类 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。A2 从类 A 方法 A1 调用

问题是它调用 A 类中的 A2,而不是 B 类中的覆盖 A2。

如何确保如果我重写方法,即使从父类 (A) 方法调用重写方法(当实际对象是重写 (B) 类的实例时,也会调用重写方法。

我知道

这不是答案,但我想明确 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:你想要的输出是什么?