Maison > développement back-end > tutoriel php > PHP orienté objet - exemple de partage de code de sous-classe étendant la classe parent (classe parent de rechargement de sous-classe)

PHP orienté objet - exemple de partage de code de sous-classe étendant la classe parent (classe parent de rechargement de sous-classe)

黄舟
Libérer: 2023-03-06 21:54:02
original
1645 Les gens l'ont consulté

En PHP, vous rencontrerez une situation dans laquelle la sous-classe hérite de la classe parent, mais vous devez apporter certaines modifications aux attributs et méthodes extension, alors la sous-classe peut réécrire les attributs et les méthodes, couvrant les attributs et les méthodes portant le même nom que la classe parent. Cependant, si la méthode de la classe parent contient beaucoup de contenu, comme des centaines ou des milliers de lignes. code, alors utilisez uniquement "parent class name::method" ou "parent::method" pour appeler la méthode remplacée dans la classe parent, il suffit de recharger la classe parent , puis d'ajouter les instructions qui doivent être développées.

Remplacement des méthodes

<?php
 class Person{
       public $name;       
       public function construct($name="" ){         
               $this->name=$name;                                             
        }        public  function say(){
             echo "我叫".$this->name  ;  
        } 

}?><?php
     class Student extends Person{
          public $name;               

          public function construct($name=""){
               $this->name =$name;
          }//这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
    public  function say(){
             echo "我叫".$this->name .",今年25岁了" ;  
    } 
}?>
Copier après la connexion

Remplacement des méthodes et autorisations d'accès

Lorsqu'une sous-classe remplace une méthode de la classe parent, veuillez noter que les autorisations d'accès des méthodes remplacées dans la sous-classe ne doivent pas être inférieures aux autorisations d'accès des méthodes remplacées de la classe parent. Par exemple, l'autorisation d'accès d'une méthode dans la classe parent est protégée, alors l'autorisation de la méthode remplacée dans la sous-classe doit être protégée ou publique. Si la méthode de la classe parent dispose d'une autorisation publique, la méthode à remplacer dans la sous-classe ne peut être que publique. En bref, lors du remplacement d'une méthode de la classe parent dans une sous-classe, elle doit disposer d'autorisations plus élevées que la méthode substituée de la classe parent.

Le nombre de paramètres lors du remplacement

Les sous-classes peuvent avoir un nombre de paramètres différent de celui de la classe parent, comme ce qui suit

constructeur , un paramètre supplémentaire $age est ajouté.

<?phpclass Student extends Person{

    public $name;    
    public $age;        

    public function construct($name="",$age=25){

         $this->name =$name;         $this->age =$age;

    }    public  function say(){

         echo "我叫".$this->name .",今年".$this->age."岁了" ;  

    } 

}?>
Copier après la connexion
Dans l'exemple ci-dessus, nous avons réalisé l'extension de la « méthode » en la remplaçant.

Cependant, bien que cela résolve le problème que nous avons mentionné ci-dessus, dans le développement réel, une méthode ne peut pas être juste un code ou plusieurs codes, comme la méthode "say()" dans la classe "Person". Il y a 100 lignes de Si nous voulons écraser cette méthode et conserver les fonctions d'origine et ajouter 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. C'est toujours correct, mais dans certains cas. Dans certains cas, la méthode de 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. . Implémentez la méthode d'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. ;

L'un est Utiliser la méthode "parent::" pour appeler la méthode remplacée dans la classe parent
 

Extension de la méthode

<?phpclass Student extends Person{

    public $name;    
    public $age;                                 

    public function construct($name="",$age=25){

        parent::construct($name,$age);        $this->age =$age;

    }    public  function say(){

        parent::say();        echo ",今年".$this->age."岁了" ;  

    } 

}?>
Copier après la connexion
Ce qui est décrit ci-dessus n'est qu'un

rechargement des attributs et des méthodes de la classe parent. Ce n'est pas une surcharge au vrai sens du terme. .On ne peut dire qu'il s'agit d'une paire de sous-classes.La classe parent a été étendue.En PHP, le mot surcharge existe également, mais la signification de surcharge est différente de celle des langages généraux.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal