【发布时间】:2013-06-02 13:01:34
【问题描述】:
我有一个小问题。在 PHP 手册网站上有一个例子:
class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}
public function testPublic() {
echo "Bar::testPublic\n";
}
private function testPrivate() {
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}
private function testPrivate() {
echo "Foo::testPrivate\n";
}
}
$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
谁能用简单的方式解释为什么在一个示例中引用 $this 指向父方法(私有方法)而在另一个示例中指向子类中定义的当前方法(公共)? 这对我来说不合逻辑,我希望它在 both 情况下都指向子类方法,或者在这两种情况下都指向父方法?
请帮忙!
【问题讨论】:
-
我猜你没有粘贴第二个例子
-
因为
testPrivate在子类中被覆盖,而$myFoo对象无法访问Bar类中的testPrivate。 -
这两种方法都被覆盖了!?这对我来说还不清楚......
标签: php inheritance this extends