类属性是否会被扩展类覆盖?

时间:2017-04-03 03:47:27

标签: php class oop properties

比如说我有两个课程AB

A:

class A {
    private $name = "Joe";
}

B:

class B extends A {
       private $name = "Scotto";
}

$name的价值是多少?它是否会覆盖父类属性,或者如果实例化它是否会在实例上?任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

我建议在文档页面上专门阅读this comment。重点是方法,但属性

是一样的
  

...私有方法仅对定义它们的类可见,并且子类不会看到父类的私有方法。如果孩子没有看到父母的私人方法,则孩子不能覆盖他们。

你的例子:

class A {
  private $name = "Joe";

  public function getName() {
    return $this->name;
  }
}

class B extends A {
  private $name = "Scotto";
}

class C extends A {
  private $name = "Scotto";

  public function getName() {
    return $this->name;
  }
}

$a = new A;
$b = new B;
$c = new C;

$a->getName(); // 'Joe'
$b->getName(); // 'Joe'
$c->getName(); // 'Scotto'