14. Application du mot-clé final
Ce mot-clé ne peut être utilisé que pour définir des classes et des méthodes. Le mot-clé final ne peut pas être utilisé pour définir les propriétés des membres, car
final signifie constante. La fonction est utilisée pour définir des constantes en PHP, donc final ne peut pas être utilisé pour définir les propriétés des membres.
Les classes marquées avec la clé finale ne peuvent pas être héritées ;
Extraits de code
Personne de classe finale{
… …
}
L'étudiant de classe étend la personne{
}
Oui L'erreur suivante se produit :
Erreur fatale : l'étudiant de classe ne peut pas hériter de la classe finale (Personne)
Les méthodes marquées avec la clé finale ne peuvent pas être remplacées par les sous-classes et constituent la version finale
Fragment de code
class Person{
final function say() {
}
}
class Student extends Person{
function say() {
}
}
L'erreur suivante se produira :
Erreur fatale : impossible de remplacer la méthode finale Person::say()
15. Utilisation de mots-clés statiques et const
Le mot-clé statique décrit les propriétés des membres et les méthodes des membres de la classe en tant que membres statiques. sont les avantages ?
Plus tôt nous avons déclaré l'être humain "Personne". Dans la classe "Personne", si on ajoute un attribut du "pays auquel appartient la personne"
, on peut utiliser la classe "Personne" pour instancier des centaines. ou plusieurs objets d'instance, chaque objet aura
l'attribut "pays". Si le projet est développé pour les chinois, alors chaque objet aura
un attribut de pays L'attribut est "Chine" et d'autres attributs. sont différents. Si nous faisons de l'attribut "country" un membre
statique, alors il n'y aura qu'un seul attribut country dans la mémoire, et il y aura des centaines d'objets ou plus partageant cet attribut
les membres statiques pourront restreindre les membres externes. accès, car les membres statiques appartiennent à la classe et n'appartiennent à aucune instance d'objet. Ils sont
espace alloué lorsque la classe est chargée pour la première fois. Les autres classes sont inaccessibles et ne sont partagées qu'avec les instances de la classe. peut
protéger les membres de la classe dans une certaine mesure ;
Analysons-le du point de vue de la mémoire. La mémoire est logiquement divisée en quatre segments. L'objet est placé dans le « tas de mémoire »
, la référence de l'objet est placée dans la "mémoire de pile", et les membres statiques sont placés dans le "segment statique initialisé", lorsque la classe est chargée pour la première fois
Une fois placée, elle peut être partagée par tous les objets dans la mémoire du tas, comme indiqué ci-dessous ; Les variables statiques de la classe
, similaires aux fonctions globales.
Extrait de code
<? class Person{ //下面是人的静态成员属性 public static $myCountry="中国"; // var $name; //人的名子 //这是人的静态成员方法 public static function say(){ echo "我是中国人<br>"; } } //输出静态属性 echo Person::$myCountry; //访问静态方法 Person::say(); //重新给静态属性赋值 Person::$myCountry="美国"; echo Person::$myCountry; ?>
Étant donné que les membres statiques sont créés lors du premier chargement de la classe, les membres statiques sont accessibles en utilisant le nom de la classe sans nécessiter un objet en dehors de la classe comme mentionné ci-dessus, les membres statiques sont partagés. , pouvons-nous donc utiliser l'objet pour accéder aux membres statiques de la classe ? Dans l'image ci-dessus, nous pouvons voir que les membres statiques n'existent pas à l'intérieur de chaque objet, mais que chaque objet peut être partagé, donc si nous utilisons un objet pour accéder aux membres, il n'y aura pas de définition d'attribut de ce type et l'objet ne sera pas accessible. Membres statiques. Dans d'autres langages orientés objet, tels que Java, vous pouvez utiliser des objets pour accéder aux membres statiques en PHP, nous devrions essayer de ne pas les utiliser car nous utilisons des membres statiques lorsque nous travaillons. sur un projet, le but est d'utiliser le nom de la classe pour y accéder. Les méthodes statiques d'une classe ne peuvent accéder qu'aux attributs statiques de la classe. Les méthodes statiques de la classe ne peuvent pas accéder aux membres non statiques de la classe. La raison est très simple. Nous voulons accéder aux autres membres de cette classe. class. , nous devons utiliser la référence $this, et le pointeur de référence $this représente l'objet qui appelle cette méthode. Nous avons dit que les méthodes statiques ne sont pas appelées avec des objets, mais sont accessibles à l'aide de noms, donc il n'y a pas d'objet du tout. , et il n'y a pas de référence $this. Sans la référence $this, les membres non statiques de la classe ne sont pas accessibles. Et comme les membres statiques de la classe sont accessibles sans objets, les méthodes statiques de la classe ne peuvent accéder qu'aux membres statiques de la classe. class. Attributs statiques, puisque $this n'existe pas, nous utilisons une classe spéciale "self" pour accéder aux autres membres statiques dans une méthode statique ; self est similaire à $this, sauf que self représente la classe dans laquelle se trouve cette méthode statique ; . Ainsi, dans une méthode statique, vous pouvez utiliser le "nom de classe" de la classe où se trouve la méthode, ou vous pouvez utiliser "self" pour accéder à d'autres membres statiques. S'il n'y a pas de circonstances particulières, nous utilisons généralement ce dernier, c'est-à-dire. c'est à dire, "self:: member" propriétés ".
Extrait de code
<? class Person{ //下面是人的静态成员属性 public static $myCountry="中国"; //这是人的静态成员方法, 通过self访问其它静态成员 public static function say(){ echo "我是".self::$myCountry."<br>"; } } //访问静态方法 Person::say(); ?>
Les membres statiques sont-ils accessibles dans des méthodes non statiques ? Bien sûr, c'est possible, mais "$this" ne peut pas également être utilisé. Les références doivent également utiliser des noms de classe ou "self : :Forme des attributs du membre".
const est un mot-clé pour définir des constantes. Pour définir des constantes en PHP, vous utilisez la fonction "define()", mais pour définir des constantes dans une classe, vous utilisez le mot-clé "const", qui est similaire à celui en C. . #define Si la valeur de
est modifiée dans le programme, une erreur se produira. Les attributs des membres modifiés avec "const" sont accessibles de la même manière que les membres modifiés avec "static", et le "nom de classe". est également utilisé. Utilisez le mot-clé "self" dans la méthode. Mais vous n'avez pas besoin d'utiliser le symbole « $ » et vous ne pouvez pas utiliser d'objets pour y accéder.
Extraits de code
<?php class MyClass{ //定义一个常量constant const constant = 'constant value'; function showConstant() { echo self::constant . "\n"; //使用self访问,不要加”$” } } echo MyClass::constant . "\n"; //使用类名来访问,也不加”$” $class = new MyClass(); $class->showConstant(); // echo $class::constant; 是不允许的
Pour plus de guides PHP orientés objet et d'articles connexes sur l'utilisation du mot-clé finalstaticconst, veuillez faire attention au site Web PHP chinois !