【问题标题】:Method overiding and inheritance [duplicate]方法覆盖和继承[重复]
【发布时间】:2015-09-19 13:52:09
【问题描述】:

以下代码:

class A {
    public function foo() {}
}

class B extends A {
    private function foo() {}
}

给我一​​个错误:“B::foo() 的访问级别必须是公共的(如在 A 类中)”

为什么我不能将 B 类中的 A 类 foo 方法重写为私有?

【问题讨论】:

  • 不,你不能,它必须是公共的或私有的。
  • 错误信息很清楚,不是吗?

标签: php


【解决方案1】:

方法覆盖中访问说明符的规则

唯一的规则是:

“子类被覆盖的方法不能比超类方法具有弱访问权限”。

【讨论】:

    【解决方案2】:
    class A {
        public function foo() {}
    }
    
    class B extends A {
        private function foo() {}
    }
    

    你不能用私有函数覆盖公共函数,如果你想覆盖这个函数,两者都必须是公共的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多