PHP访问控制问题

abstract class base { 
    public function inherited() { 
        $this->overridden(); 
    } 
    private function overridden() { 
        echo 'base'; 
    } 
} 

class child extends base { 
    private function overridden() { 
        echo 'child'; 
    }
}
$test = new child();
$test->inherited();

这里为什么会输出base,我的认知是输出child啊。。

阅读 550
评论
    3 个回答

    如果想显示child,你还需要重写inherited方法,如果不重写,原父类的inherited调用的也是原父类的overridden方法。所以结果为base

      子类虽然继承父类,但是没有重写inherited方法,调用的实际上是父类的方法

      PS:子类继承父类的时候两者的 属性和方法 是分开的,并不是说继承了重写方法或者数学就在内存上覆盖了这样子

      既然调用的是父类的方法,那么$this自然是父类本身,所以输出的是base
      里面存在一些 继承和多态(误) 知识
      PS:理解不够,说的不是很清楚,希望有大神指点一下里面准确的区别

        私有方法不能覆盖啊
        不然私有二字的意义何在

          撰写回答

          登录后参与交流、获取后续更新提醒

          相似问题
          推荐文章