提问者:小点点

抽象类中的受保护方法


在我的PHP代码中,我在一个抽象类中有一个受保护的方法,我们将其称为类A。如果我创建一个名为B的新类,它扩展了A,我必须简单地在B中声明它是公共的,还是我必须重写所有的实现,这样当我实例化B时,我就可以调用这个方法了?

abstract class A {
  protected function test() {
    //do some stuff here
  }
}

class B extends A {
  public function test() {
    //Do I need to do something here?
  }
}

谢谢你Crouz


共1个答案

匿名用户

您需要执行父::test()调用-或者根本不在子类中声明方法。在第二种情况下,方法将从父类继承,而在第一种情况下,它将是B的方法,它调用父方法,即A的方法。

此外,如果你不在子类中声明方法,它将不是公共的,所以它可能不是你要找的东西(提到是为了展示继承是如何工作的)。也就是说,如果你想拥有公共方法——唯一的方法是从B类的test()方法中调用父::test()