受保护的变量在继承的类中是否变为私有?

时间:2011-07-20 17:51:39

标签: php inheritance

<?php 
class Example{
public $pub="public";
private $priv = "private";
protected $prot = "protected";
}
class SubClass extends Example{
}
$ex = new Example();
$sub = new SubClass();
/* called indiviually */
echo $sub->priv; // error
echo $sub->prot; // error

echo "<br/>";

echo $ex->pub; // works
echo $ex->prot; // error 
?>

正如您所看到的,使用父类或子类调用受保护变量会导致错误。所以我可以假设:像 $ prot这样的东西就像父类中的私有修饰符一样,我们不允许从类块外部调用它。 $ prot变量在继承时进入子类后,它开始像私有变量一样,因为即使现在它也不允许从外部调用它。 PS:尚未研究::范围解析运算符。仅用于 - &gt;箭头和$ this

1 个答案:

答案 0 :(得分:0)

受保护的变量在子类中可用,但会在任何其他范围内引发错误:

<?php 
class Example{
      public $pub="public";
      private $priv = "private";
      protected $prot = "protected";
}
class SubClass extends Example{
      function get_protected() {
           return $this->prot;
      }
}

$ex = new Example();
$sub = new SubClass();

/* called indiviually */
echo $sub->priv; // error
echo $sub->prot; // error

echo $sub->get_protected() // works

echo $ex->pub; // works
echo $ex->prot; // error