想想矛盾的地方在于父类中的方法getPrivate()内,"$this"究竟代表了哪个类的实例呢,父类还是子类? 【看了下文档关于get_class()方法的说明中,有这样的例子<?phpabstract class bar { public function __construct() { var_dump(get_class($this)); var_dump(get_class()); } }class foo extends bar { }new foo;?>得到结果: string(3) "foo" string(3) "bar"这么看来"$this"在基类中指代的是子类的实例,那在我的例子中执行"$this->private"应该报未定义错误啊。】
php的private是指属性或方法,你不能通过外部直接访问,意思是
你不能$son->private这么去访问,而只能通过内部的public方法暴露出来。
而子类不能继承基类的私有属性
因此楼主想看到的结果其实是
echo $son->$private;吧
我不明白的是:为什么getPrivate()方法中调用函数get_class()得到的是"Son"而不是"ParentClass"
【看了下文档关于get_class()方法的说明中,有这样的例子<?phpabstract class bar {
public function __construct()
{
var_dump(get_class($this));
var_dump(get_class());
}
}class foo extends bar {
}new foo;?>得到结果:
string(3) "foo"
string(3) "bar"这么看来"$this"在基类中指代的是子类的实例,那在我的例子中执行"$this->private"应该报未定义错误啊。】