【问题标题】:How to access parent's parent's methods from a en extended class?如何从扩展类访问父级的父级方法?
【发布时间】:2020-08-27 11:17:15
【问题描述】:

我正在研究 PHP 中 OOP 中的继承概念,如 php.net 中所述。

我开始了解 PHP 中的各种继承特性,比如一个类不能继承多个类,为了克服这个问题,我们应该使用traits

同样,我遇到了一个让我头疼的问题。在 PHP 中,如果我们像这样进行多级继承

class A {
        // more code here
}

class B extends A {
        // more code here
}

class C extends B {
        // more code here
}

class D extends C {
        // more code here
}

// and so on ........

这样,类可以进一步扩展到多个级别,但我想知道我们如何从最底层的孩子调用最顶层的父类方法。我知道我们可以使用parent::methodName()从子类调用直接父函数但是如果有n级的深度继承那么我们如何确定子类的父类方法例如从子类调用A::methodD ,同样从Z调用A的方法。

【问题讨论】:

  • AFAIK 这是不可能的,但我也很好奇是否有解决方案!
  • 这是你不应该关心的东西(AFAIK)。如果您调用父方法,那么它可以决定如何或是否要将调用传递给它的父方法。

标签: php oop inheritance


【解决方案1】:

你不能这样做。

尝试做这样的事情只会表明您的继承模型存在问题。

如果C 扩展B 扩展A,则A 的任何“原始”方法都不再与C 相关。如果它们相关的,也许一开始就应该扩展A

一般来说,尽量不要过度滥用继承。它是ripewithproblems,通常你应该更喜欢组合而不是继承。

【讨论】:

  • 我只是想了解这背后的概念,因此只是想知道用例。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多