Maison >développement back-end >tutoriel php >Explication détaillée de la définition, de l'utilisation et des exemples de différences d'attributs publics, privés et protégés en PHP
public : les attributs publics ou les méthodes
peuvent être appelés dans les sous-classes via self::var ou self::method, et peuvent être appelés dans les classes parent via la méthode parent::method , mais les propriétés publiques ne peuvent pas être appelées
peuvent être appelées dans l'instance via $obj->var ou self::method
protected: protected type
Dans le sous-classe, vous pouvez l'appeler via self::var ou self::method Vous pouvez appeler la méthode dans la classe parent via parent::method
Dans l'instance, vous ne pouvez pas appeler la méthode de type protégé via $obj-. >var. Ou attribut
privé : type privé
Les attributs ou méthodes de ce type ne peuvent être utilisés que dans cette classe et ne peuvent pas être appelés dans les instances de cette classe, ses sous-classes ou instances de sous-classes Type privé Attributs et méthodes
2. La différence entre soi et parent
a). Ces deux objets sont couramment utilisés dans les sous-classes. Leur principale différence est que self peut appeler des propriétés publiques ou protégées dans la classe parent, mais parent ne peut pas appeler
b).self :: Il représente le membre statique de la classe actuelle ( Méthodes et propriétés) Contrairement à $this, $this fait référence à l'objet actuel
<?php class BaseClass { public $public = 'public'; private $private = 'private'; protected $protected = 'protected'; function construct(){ } function print_var(){ print $this->public;echo '<br />'; print $this->private; echo '<br />'; print $this->protected; echo '<br />'; } } class Subclass extends BaseClass { // public $public = 'public2'; protected $protected ='protected2'; function construct(){ echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值 echo '<br />'; echo $this->private;//error 因为是私有的只有在定义她的类baseclass中可以用 } } $obj1 = new BaseClass(); $obj1->print_var(); //echo $obj1->protected;//error 因为是受保护的,只有在本类内部或子类父类中可以调用 //echo $obj1->private;//error 同上私有的,只有在本类内调用 echo $obj1->public; echo "<hr />"; $obj2 = new Subclass(); echo '<br />'; echo $obj2->public;echo '<br />'; echo $obj2->protected; //echo $obj2->private;//error //echo $obj2->protected;//error ?>
Résumé
public signifie global et est accessible par les sous-classes à l'intérieur et à l'extérieur de la classe
private ; signifie private , ne peut être utilisé que dans cette classe ;
protected signifie protégé et n'est accessible que dans cette classe, ses sous-classes ou ses classes parentes
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!