求大神给我讲一下具体区别
<?
class employee  
{  
  
    private $sal = 3000; 
    //protected $sal = 3000;
    public function getSal() {    
        return $this->sal;  
    }    
}  
class Manager extends employee  
{  
    protected  $sal = 5000;  
    public function getParentSal() {  
   
    return parent::getSal();  
    }   
}  
$manager = new Manager();  
 
echo $manager->getSal();  
echo "<br />";  
echo  $manager->getParentSal(); 第五行的两种表达输出时两种不同结果,区别在哪?

解决方案 »

  1.   

    结果一个是3000  3000 一个是5000  5000 ,这不就是区别吗?
    父类中用protected的时候,被子类覆盖了啊!
      

  2.   

    1) 联系 protected和private一样只能在类的内部访问,不能在类的外部访问。2) 区别但是在派生其他类的情况下,protected和private的区别就体现出来了。private型变量只能在类本身中访问,在其派生类中也不能访问;而protected型的变量可以在派生类中访问
      

  3.   

    运行结果都是3000由于Manager继承了employee,因此也就继承了getSal方法而parent::getSal()就是调用父类的getSal方法,也就是employee中的getSal方法因此结果是3000, 同样$manager->getParentSal();调用的也是父类的getSal方法因此结果也为3000,建议你详细看一下OOP中的继承,就明白了