在读php.net上的文档时,有一个class内方法的作用域问题,没太看明白,代码如下
<?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
?>
输出是
Bar::testPrivate
Foo::testPublic
请问
1. 为什么testPrivate调用的是父类的方法
2. testPublic调用的是子类的方法
php版本5.2.17
多谢
1
yangg 2015-05-19 12:08:37 +08:00 via iPhone
私有方法不能重写,test是父类的
|
2
ldp940622 2015-05-19 15:29:59 +08:00 via iPhone
私有方法不能重写
|
3
jacob 2015-05-19 15:36:35 +08:00
私有方法只能在自己类内部调用,你以bar作用域是无法调用别的类的私有方法的.如果你把bar的testPrivate删了就知道,.
对于public,因为你的this指向的是foo类,所以他调用的是foo的public方法. |
4
iambic OP 明白了,多谢各位
|