Maison  >  Article  >  développement back-end  >  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)

黄舟
黄舟original
2017-03-25 10:00:441622parcourir

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岁了" ;  
    } 
}?>

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."岁了" ;  

    } 

}?>
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."岁了" ;  

    } 

}?>
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!

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