class c_test {

private $s_value;

private function f_set() {

   $this->s_value=1;

}

public function f_display() {

$this->f_set();

echo $this->s_value;


}


}class c_sun extends c_test {


}$o_test=new c_sun();$o_test->f_display();为什么还有正确的输出,private定义的属性或者方法,不是不会被子类继承吗?

解决方案 »

  1.   

    是没有被继承~·但是你c_test有公共方法啊,这个可以被继承,然后访问私有变量
      

  2.   

    是不会被子类继承但是能访问 private 属性的  public 方法 f_display 会被子类继承呀
      

  3.   

     public function f_display() 这个函数是调用 private function f_set() 赋值的啊。在类c_test中申明private $s_value时,并没有赋值。当定义子类c_sun时,private function f_set() 是不会被继承的。$o_test这个对象是类c_sun的实例化,既然private function f_set() 未被继承,那么赋值操作是怎么完成的?
      

  4.   

    你调用的是f_display()这个公有方法啊。子类c_sun已经继承了f_display()这个公有方法。而这个方法跟f_set()是同类。可以调用他。就完成了赋值操作。