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

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

伊谢尔伦
伊谢尔伦original
2017-07-03 09:55:275863parcourir

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 = &#39;public&#39;;
  private $private = &#39;private&#39;;
  protected $protected = &#39;protected&#39;;
  function construct(){
  }
  function print_var(){
    print $this->public;echo &#39;<br />&#39;;
    print $this->private; echo &#39;<br />&#39;;
    print $this->protected; echo &#39;<br />&#39;;
  }
}

class Subclass extends BaseClass {
  // public $public = &#39;public2&#39;;
  protected $protected =&#39;protected2&#39;;
  function construct(){
    echo $this->protected;//可以访问,因为类中定义为受保护的,所以在本类或子类中可以,子类中还可以重复付值
    echo &#39;<br />&#39;;
    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 &#39;<br />&#39;;
  echo $obj2->public;echo &#39;<br />&#39;;
  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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn