PHP继承-何时使用父级?

PHP继承-何时使用父级?,php,oop,inheritance,Php,Oop,Inheritance,在这个特定的示例中,我们有一个父类和继承自父类的子类 在父类中,我们有一个名为$abc的公共变量和一个名为abc()的方法: 继承的子类: class DEF extends ABC { function def() { parent::abc(); echo $this->hello; } } 我的问题是,为什么我们使用parent::从父类访问方法,而使用$this->访问变量,而不是parent::?我坚持使用$this->,但我想知道背后的理论 class

在这个特定的示例中,我们有一个父类和继承自父类的子类

在父类中,我们有一个名为$abc的公共变量和一个名为abc()的方法:

继承的子类:

class DEF extends ABC {
  function def() {
    parent::abc();
    echo $this->hello;
  }
}
我的问题是,为什么我们使用parent::从父类访问方法,而使用$this->访问变量,而不是parent::?我坚持使用$this->,但我想知道背后的理论

class DEF extends ABC {
  function abc() {
    return parent::abc(); // here you use parent!
  }
}

您可以使用
parent::
调用属于父级但可能/被子级重写的方法。

在这种特殊情况下,您也可以使用$this->abc()。哦,因此它仅在重写时使用-我刚刚错过了这一点。现在一切都有意义了。不,如果你不重写方法,你也可以使用它…它清楚地告诉你正在调用一个不属于类的方法,但属于父类(或者你想调用父类而不是子类中被重写的方法)@user2584228,或者当你想调用父方法时,即使子级有一个。确实,我理解-但是,既然变量(而不是方法)属于父级,为什么我不能使用parent::获取其值?@user2584228,因为您不能重写属性(变量)。您可以更改它的值或删除它。一旦在父级中定义了它,它就存在于
$this
中。
class DEF extends ABC {
  function abc() {
    return parent::abc(); // here you use parent!
  }
}