您好,匿名用户
随意问技术百科期待您的加入

PHP类继承的一段代码

0 投票
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

来自php手册的一段代码,请问最后的输出结果是如何得到的?

子类Foo的对象调用了test()方法,test()方法调用了$this->testPrivate();这个$this此时应该是子类的引用,按理说应该调用子类的testPrivate()方法,实际上却调用了父类的testPrivate()方法,why?

用户头像 提问 2012年 12月1日 @ Hecarim 上等兵 (361 威望)
分享到:

1个回答

0 投票
public: 可以被继承,也可以被外部调用。
private: 不可以被继承,也不可以被外部调用。
protected: 可以被继承,但不能被外部调用。
用户头像 回复 2012年 12月1日 @ Lucia 上等兵 (416 威望)
提一个问题:

相关问题

0 投票
1 回复 44 阅读
0 投票
1 回复 30 阅读
用户头像 提问 2012年 12月1日 @ Miss Fortune 上等兵 (418 威望)
0 投票
1 回复 31 阅读
用户头像 提问 2013年 11月27日 @ Garen 上等兵 (269 威望)
0 投票
1 回复 48 阅读
用户头像 提问 2012年 12月1日 @ Dante 上等兵 (290 威望)
0 投票
1 回复 26 阅读
用户头像 提问 2013年 12月19日 @ Zeus 上等兵 (193 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...