La réécriture de méthode PHP fait référence au remplacement des méthodes héritées de la classe parent, c'est-à-dire au remplacement de la méthode de la classe parent. La méthode est la suivante : définissez d'abord un paramètre de constructeur, puis définissez une sous-classe à utiliser " extends " ; mot-clé à hériter ; remplace enfin la méthode de la classe parent.
Recommandé : "Tutoriel vidéo PHP"
Cette méthode convient à toutes les marques Ordinateur
Exemple d'opération de remplacement de méthode de programmation orientée objet (POO) PHP
Les exemples de cet article décrivent l'opération de remplacement de méthode PHP en programmation orientée objet (POO). Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Parce que PHP est un langage faiblement typé, il peut recevoir différents types de données dans les paramètres de la méthode elle-même, et parce que la méthode PHP peut recevoir un nombre indéfini de paramètres, il n'est donc pas valide d'appeler différentes méthodes avec des noms de méthode différents en passant un nombre différent de paramètres, donc PHP ne peut pas être surchargé.
Bien que les méthodes portant le même nom ne puissent pas être définies en PHP, dans les deux classes ayant une relation parent-enfant, nous pouvons définir des méthodes portant le même nom que la classe parent dans la sous-classe, héritant ainsi des méthodes de la classe parent. La méthode est écrasée (en remplaçant la méthode de la classe parent).
<?php class Person { //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 function __construct($name, $sex, $age) { $this->name = $name; $this->sex = $sex; $this->age = $age; } //这个人可以说话的方法, 说出自己的属性 function say() { echo "my name is:" . $this->name . " sex:" . $this->sex . " my age is:" . $this->age; } } //定义一个子类“学生类“使用”extends”关键字来继承”人”类: class Student extends Person { var $school; //学生所在学校的属性 function __construct($name,$sex,$age,$school) { parent::__construct($name,$sex,$age); $this->school = $school; } // 重写父类的say()方法 function say() { echo "my name is:" . $this->name ." my school is:" . $this->school; } //这个学生学习的方法 function study() { echo "my name is:" . $this->name . " my school is:" . $this->school; } } ?>
De plus, lorsqu'une sous-classe substitue une méthode d'une classe parent, vous devez également y prêter attention. Les droits d'accès des méthodes de la sous-classe ne doivent pas être inférieurs aux droits d'accès de la méthode substituée. de la classe parent, c'est-à-dire qu'elle doit être supérieure ou égale aux autorisations d'accès pour les méthodes de la classe parent.
Par exemple, si l'autorisation d'accès de la méthode de la classe parent est protégée, alors les autorisations à remplacer dans la sous-classe doivent être protégées et publiques. Si la méthode de la classe parent est publique, alors la méthode à remplacer. dans la sous-classe ne peut être que publique, en bref, les méthodes des sous-classes ont toujours des droits d'accès supérieurs ou égaux aux méthodes remplacées de la classe parent.
Dans l'exemple ci-dessus, nous avons écrasé la méthode "say()" héritée de la classe parent dans la sous-classe "Student". En écrasant, nous avons obtenu l'extension de la "méthode". Cependant, bien que cela résolve le problème mentionné ci-dessus, dans le développement réel, une méthode ne peut pas être constituée d'un seul code ou de plusieurs codes. Par exemple, la méthode "say()" dans la classe "Person" comporte 100 lignes de code If. nous voulons écraser cette méthode et conserver les fonctions d'origine plus un peu plus de fonctionnalités, nous devons réécrire les 100 lignes de code d'origine, plus quelques lignes de code développées. Dans certains cas, les méthodes du fichier sont plutôt bonnes. la classe parent ne peut pas voir le code original. Comment réécrire le code original à ce moment-là ? Nous avons également une solution, c'est-à-dire que dans la méthode de sous-classe, vous pouvez appeler la méthode surchargée dans la classe parent. Autrement dit, vous pouvez prendre les fonctions originales de la méthode surchargée et ajouter certaines de vos propres fonctions. . Pour implémenter l'appel de la méthode surchargée de la classe parent dans la méthode de la sous-classe :
La première consiste à utiliser le "nom de classe ::" de la classe parent pour appeler la méthode surchargée de la classe parent < ; 🎜>
La première consiste à utiliser la méthode "parent::" pour appeler la méthode surchargée dans la classe parent ;//定义一个子类“学生类“使用”extends”关键字来继承”人”类: class Student extends Person { var $school; //学生所在学校的属性 function __construct($name,$sex,$age,$school) { parent::__construct($name,$sex,$age); $this->school = $school; } // 重写父类的say()方法 function say() { //使用父类的"类名::"来调用父类中被覆盖的方法; // Person::say(); //或者使用"parent::"的方试来调用父类中被覆盖的方法; parent::say(); echo "my name is:" . $this->name ." my school is:" . $this->school; } //这个学生学习的方法 function study() { echo "my name is:" . $this->name . " my school is:" . $this->school; } }
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!