Php 抽象类中的受保护方法

Php 抽象类中的受保护方法,php,class,abstract,Php,Class,Abstract,在我的PHP代码中,我在一个抽象类中有一个受保护的方法,我们称之为类a。如果我创建了一个名为B的新类,它扩展了a,我是否需要在B中简单地声明它为public,或者我必须重新编写所有实现,以便在实例化B时调用此方法 abstract class A { protected function test() { //do some stuff here } } class B extends A { public function test() { //Do I need

在我的PHP代码中,我在一个抽象类中有一个受保护的方法,我们称之为类a。如果我创建了一个名为B的新类,它扩展了a,我是否需要在B中简单地声明它为public,或者我必须重新编写所有实现,以便在实例化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

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


另外,如果您不在子类中声明方法,它将不会是公共的,因此它可能不是您要查找的对象(提到它是为了说明继承是如何工作的)。也就是说,如果你想拥有public方法,唯一的方法就是从
test()
B
class

的方法内部调用
parent::test()
,但是如果我没有在子类中声明该方法,我就不能调用它,因为它在parent类中受到保护。我说的对吗?@Crouzilles是的,我只是在打:谢谢你的回答该死,为什么一个答案不能马上被接受,现在我必须等着给它一个绿色的勾号。对我不公平的是,我必须记得稍后再回到这个问题,因为我确实希望@Alma得到他/她的绿色勾号,以便得到迅速而简洁的回答。