PHP类与对象中的private访问控制的疑问

在手册中遇到了一个没想明白的问题,记录一下:

 1 class Bar 
 2 {
 3     public function test() {
 4         $this->testPrivate();
 5         $this->testPublic();
 6     }
 7 
 8     public function testPublic() {
 9         echo "Bar::testPublic\n";
10     }
11     
12     private function testPrivate() {
13         echo "Bar::testPrivate\n";
14     }
15 }
16 
17 class Foo extends Bar 
18 {
19     public function testPublic() {
20         echo "Foo::testPublic\n";
21     }
22     
23     private function testPrivate() {
24         echo "Foo::testPrivate\n";
25     }
26 }
27 
28 $myFoo = new foo();
29 $myFoo->test(); // Bar::testPrivate 
30                 // Foo::testPublic

为啥第一行会输出Bar::testPrivate呢?

一些资料:

http://www.haidx.com/php-private.html

还有php官网上,关于这段代码的贡献者回复中,也找到了一条:

http://www.php.net/manual/zh/language.oop5.visibility.php#87413

posted @ 2012-11-01 15:30  无墨来点睛  Views(402)  Comments(2Edit  收藏  举报