【问题标题】:protected method in abstract class抽象类中的受保护方法
【发布时间】:2013-10-08 13:14:41
【问题描述】:

在我的 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?
  }
}

谢谢 克鲁兹

【问题讨论】:

    标签: php class abstract


    【解决方案1】:

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

    另外,如果你不在子类中声明方法,它就不会是公共的,所以它可能不是你要找的东西(提到它是为了说明继承是如何工作的)。 IE。如果你想拥有公共方法 - 唯一的方法是从 test() 类的 test() 内部调用 parent::test()

    【讨论】:

    • 但是如果我不在子类中声明该方法,我不能调用它,因为它在父类中是受保护的。我这样说对吗?
    • @Crouzilles 是的,我只是在输入那个:p
    • 感谢您的回答
    • 该死,为什么不能立即接受答案,现在我必须等待给它一个绿色勾号。对我不公平,我必须记住稍后再回到这个问题,因为我确实希望 @Alma 得到他/她的绿色勾号以获得及时和简洁的回应。
    猜你喜欢
    • 2015-08-02
    • 2017-06-14
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多