首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

写了段代码,不知道该怎么理解面向对象的继承

2013-10-21 
写了段代码,不知道该如何理解面向对象的继承本帖最后由 chaoxi1991 于 2013-10-18 16:36:27 编辑class Par

写了段代码,不知道该如何理解面向对象的继承
本帖最后由 chaoxi1991 于 2013-10-18 16:36:27 编辑

class ParentClass {
    private $private = 1;
    public function getPrivate()
    {
        echo 'getPrivate() belong to class "' . get_class($this) . '"<br>';
        return $this->private;
    }
}

class Son extends ParentClass {
}

$son = new Son();
echo 'private=' . $son->getPrivate();

我预期结果是应该报错的,但并没有报错。
执行结果是:
in class "ParentClass" function getPrivate():"Son"
private=1
想问为什么$private私有属性会被打印出来呢 PHP 面向对象 继承
[解决办法]
这样都打印不出来,然后你想这个$private怎么样才能暴露出来?
php的private是指属性或方法,你不能通过外部直接访问,意思是
你不能$son->private这么去访问,而只能通过内部的public方法暴露出来。
[解决办法]
getPrivate 是 ParentClass 类的方法,当然能通过 ParentClass::getPrivate 打印出 ParentClass 的私有属性 private
[解决办法]
正如#1,#2楼所说,因为子类继承了基类的方法,基类的方法可以打印出私有属性。
而子类不能继承基类的私有属性
因此楼主想看到的结果其实是
echo $son->$private;吧

热点排行