我有一个小问题。在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指向父方法(私有方法)而在另一个例子中指向子类(public)中定义的当前方法? 这对我来说不合逻辑,我希望它指向两个案例中的子类方法或两种情况下的父方法?
请帮忙!
答案 0 :(得分:1)
这是因为子类只能访问父项的方法,如果它是public
或protected
,而不是private
。所以它采用自己的私有方法。
如果您始终想要调用当前类的方法,请使用self::
代替$this->
。