PHP继承$this运算符的用法

PHP继承$this运算符的用法,php,inheritance,this,extends,Php,Inheritance,This,Extends,我有一个小问题。在PHP手册网站上有一个例子: class Bar { public function test() { $this->testPrivate(); $this->testPublic(); } public function testPublic() { echo "Bar::testPublic\n"; } private function testPrivate() {

我有一个小问题。在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指向父方法(私有方法),而在另一个例子中指向子类(公共)中定义的当前方法吗? 这对我来说是不合逻辑的,我希望它在两种情况下都指向子类方法,还是在这两种情况下都指向父类方法


请帮忙

这是因为子类只能访问父类的方法,如果它是
公共的
受保护的
,而不是
私有的
。因此,它求助于自己的
私有方法


如果总是要调用当前类的方法,使用
self::
而不是
$this->

我猜您没有粘贴第二个示例,因为
testPrivate
在子类中被重写,而
$myFoo
对象无法访问
Bar
类中的
testPrivate
。这两个方法都被重写了!?我还不清楚…嗯。。。。运算符self::是用于常量和静态成员的类运算符。我仍然不清楚,因为我希望在一个子类中访问这两个重写的方法。它从超类获取私有,从子类获取公共。也许这是正确的行为??谁知道
self::
也可以用于方法。试试看!我在附近玩了一会儿,我想这是因为范围。将#this#与私有#成员#(函数或属性)结合使用并继承的方法仍然被视为超类的成员,无法访问子类的私有成员!另一方面,它可以访问公共和受保护的成员。因为它可以访问子类的私有成员,所以它仍然指向超类中的私有成员。。。差不多吧。如果我使用self::总是将evelute转换为超类!