<?php
class pa{
private function m(){
echo 'Parent\'s function';
}
public function run(){
$this->m();
}
}
class child extends pa{
public function m(){
echo 'child\'s function';
}
}
$obj=new child();
$obj->run();//results: parent's function,why?
代码 2
class pa{
public function m(){//change private to public
echo 'Parent\'s function';
}
public function run(){
$this->m();
}
}
class child extends pa{
public function m(){
echo 'child\'s function';
}
}
$obj=new child();
$obj->run();//result:child function
编辑:子类扩展了pa,所以它有函数run()可供使用,run()函数实际上属于子类,子类中的这个run()函数中的$this应该指向子类的实例,但事实是,它呼应了“父母的职能”。
当我将 pa 类中的函数 m() 更改为 public 时,它打印出“子函数”;但是为什么?驻留在类中的 $this 都应该引用它创建的对象,无论函数在哪里(其中有“ $this") 来自。有谁能简单地向我解释一下吗?
编辑:
更具体地说,run() 函数中的 $this 在这两种情况下指向两个不同的对象。
而在等了很久的答案之后,似乎没有人能明确解释为什么在这两种情况下,$this 指的是两种不同的东西。
$this 在子类中指的是什么?