1. Der Unterschied zwischen öffentlich, privat und geschützt
Öffentlich: verfügt über die größten Berechtigungen und kann intern aufgerufen, in einer Instanz aufgerufen usw. werden.
protected: geschützter Typ, der für diese Klasse und geerbte Klassenaufrufe verwendet wird.
private: Privater Typ, der nur in dieser Klasse verwendet wird.
2. Beispiel
Der Code lautet wie folgt:
<?php error_reporting (E_ALL); class test{ public $public; private $private; protected $protected; static $instance; public function construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } static function tank(){ if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; echo $this->private; //private,内部可以调用 echo $this->protected; //protected,内部可以调用 $this->pri_function(); //private方法,内部可以调用 $this->pro_function(); //protected方法,内部可以调用 } protected function pro_function(){ echo "you request protected function<br>"; } private function pri_function(){ echo "you request private function<br>"; } } $test = test::tank(); echo $test->public; echo $test->private; //Fatal error: Cannot access private property test::$private echo $test->protected; //Fatal error: Cannot access protected property test::$protected $test->pub_function(); $test->pro_function(); //Fatal error: Call to protected method test::pro_function() from context $test->pri_function(); //Fatal error: Call to private method test::pri_function() from context ?>
Aus dem obigen Beispiel: Wir können sehen, dass
public: intern in einer Klasse aufgerufen oder instanziiert werden kann.
privat: Kann innerhalb der Klasse aufgerufen werden und beim Instanziieren des Aufrufs wird ein Fehler gemeldet.
geschützt: Es kann innerhalb der Klasse aufgerufen werden und beim Instanziieren des Aufrufs wird ein Fehler gemeldet.
Der Code lautet wie folgt:
<?php class test{ public $public; private $private; protected $protected; static $instance; public function construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } protected function tank(){ //私有方法不能继承,换成public,protected if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; } protected function pro_function(){ echo "you request protected function<br>"; echo $this->protected; } private function pri_function(){ echo "you request private function<br>"; echo $this->private; } } class test1 extends test{ public function construct(){ parent::tank(); parent::construct(); } public function tank(){ echo $this->public; echo $this->private; //Notice: Undefined property: test1::$private echo $this->protected; $this->pub_function(); $this->pro_function(); $this->pri_function(); //Fatal error: Call to private method test::pri_function() from context 'test1' } public function pro_extends_function(){ echo "you request extends_protected function<br>"; } public function pri_extends_function(){ echo "you request extends_private function<br>"; } } error_reporting(E_ALL); $test = new test1(); $test -> tank(); //子类和父类有相同名字的 属性和方法 ,实例化子类时,子类的中的属性和方法会盖掉父类的。 ?>
Aus dem obigen Beispiel können wir sehen, dass
public: public in test vererbt werden kann .
privat: Privat im Test kann nicht vererbt werden.
geschützt: im Test geschützt kann vererbt werden.
Statisch: Statisch im Test kann vererbt werden.
Das obige ist der detaillierte Inhalt vonAnwendungsbeispiele und Differenzanalyse von öffentlich, privat und geschützt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!