2011-07-20 48 views
1
<?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的行为就像在父类private修饰符,我们不允许从类块外调用它。$ PROT变量时继承到子类,它开始表现得像私有变量,因为即使现在,它是不允许从外部调用它。 PS:没研究::范围解析操作符呢。只用 - >箭头,$这是否受保护的变量在继承的类变成私有?

回答

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 
相关问题