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

时间:2014-11-18 16:28:21

标签: php oop

考虑如下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)类的实例时),也会调用重写方法。

1 个答案:

答案 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 :您想要的输出是什么?