本帖最后由 chaoxi1991 于 2013-10-18 16:36:27 编辑

解决方案 »

  1.   

    这样都打印不出来,然后你想这个$private怎么样才能暴露出来?
    php的private是指属性或方法,你不能通过外部直接访问,意思是
    你不能$son->private这么去访问,而只能通过内部的public方法暴露出来。
      

  2.   

    getPrivate 是 ParentClass 类的方法,当然能通过 ParentClass::getPrivate 打印出 ParentClass 的私有属性 private
      

  3.   

    正如#1,#2楼所说,因为子类继承了基类的方法,基类的方法可以打印出私有属性。
    而子类不能继承基类的私有属性
    因此楼主想看到的结果其实是
    echo $son->$private;吧
      

  4.   

    private需要以非直接的方式去得到它的值,这个我了解。
    我不明白的是:为什么getPrivate()方法中调用函数get_class()得到的是"Son"而不是"ParentClass"
      

  5.   

    既然getPrivate()方法是属于"ParentClass"类的,那为什么在getPrivate()方法内,打印get_class(),却是"Son"而不是"ParentClass"呢
      

  6.   

    想想矛盾的地方在于父类中的方法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"应该报未定义错误啊。】