比如说我有两个课程A
和B
:
A:
class A {
private $name = "Joe";
}
B:
class B extends A {
private $name = "Scotto";
}
$name
的价值是多少?它是否会覆盖父类属性,或者如果实例化它是否会在实例上?任何帮助都会很棒,谢谢!
答案 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'