Maison > Article > développement back-end > Quelle est la différence entre le rechargement et la réécriture php ?
Réécriture :
signifie que lorsqu'une sous-classe hérite de certaines méthodes de la classe parent et que la sous-classe définit la même méthode en interne, alors cette nouvelle définition La méthode remplacera la méthode héritée de la classe parent, et la sous-classe ne peut appeler que ses méthodes définies en interne.
a les exigences suivantes :
1. Lorsqu'une classe parent et une sous-classe ont une méthode avec exactement les mêmes paramètres et le même nom, la méthode de la sous-classe remplacera la méthode. méthode de la classe parent. Méthodes de la classe .
Les paramètres doivent être cohérents pour obtenir la couverture de la méthode. Lorsque le nombre de paramètres est incohérent, une erreur sera signalée (cela implique la surcharge des méthodes mentionnées ci-dessus). Lorsque les noms de méthodes sont incohérents, ils ne seront pas écrasés, uniquement les méthodes nouvellement définies de la sous-classe.
2. Lors de l'implémentation de la couverture de méthode, les modificateurs d'accès peuvent être différents, mais la portée d'accès de la sous-classe doit être supérieure ou égale à la portée d'accès de la classe parent .
C'est probablement la règle de conception des langages comme php. Ce que je comprends, c'est qu'il est plus facile d'accéder aux éléments de niveau supérieur. Si vous souhaitez accéder aux éléments de niveau inférieur, vous devez disposer d'autorisations plus élevées.
nécessite que les paramètres soient les mêmes que le nom. Il n'est pas obligatoire que la sous-classe porte le même nom que la classe parent.
nécessite que les paramètres et les noms soient identiques. Plus précisément, le nombre de paramètres doit être le même que celui de la classe parent, et non les noms des paramètres. Autrement dit, le nom des paramètres transmis peut être arbitraire, à condition que le nombre transmis soit le même.
Regardez le code :
<?php class shao { public function sasa($name){ echo $name,'狗!<br/>'; } } class zhen extends shao{ public function aaa() { echo '猫<br/>'; } } $lli = new zhen(); $lli->aaa(); $lli->aaa('binghh'); ?>
<?php class fu { public function text(){ echo '父类'; } public function textt(){ echo '父亲'; } } class erzi extends fu{ public function text() { parent::text();//我要父类的东西 echo '儿子';//重写 } } $shili = new fu(); $erzi = new erzi(); $erzi->text(); ?>
Surcharge :
La surcharge est une implémentation du polymorphisme de classe. La surcharge de fonctions signifie qu'un identifiant est utilisé comme plusieurs noms de fonction, et ces fonctions portant le même nom peuvent être distinguées par le numéro ou les types de paramètres de la fonction, afin qu'il n'y ait pas de confusion dans l'appel. Autrement dit, lorsqu'elles sont appelées, bien que les noms de méthodes soient les mêmes, les fonctions correspondantes peuvent être automatiquement appelées en fonction de différents paramètres.
php n'est pas facile à mettre en œuvre.
peut faire en sorte qu'une méthode de la classe produise plusieurs effets, et différentes logiques peuvent être exécutées en fonction des différents paramètres transmis.
a les exigences suivantes :
1 Lors de l'utilisation de la surcharge, elle ne peut être obtenue qu'avec le même nom de méthode et des formes de paramètres différentes. Différents types de paramètres peuvent être différents types de paramètres, différents numéros de paramètres et différents ordres de paramètres (les types de paramètres doivent être différents
2. La surcharge ne peut pas être effectuée via les autorisations d'accès, les types de retour et les exceptions levées ;
3. Le type d'exception et le nombre de méthodes n'affecteront pas la surcharge ;
<?php class fu { public function text(){ echo '父类'; } public function textt(){ echo '父亲'; } } class erzi extends fu { function test($name) { //方法重载 parent::text();//我要父类的东西 echo "erzi",$name;//重写 } } $erzi = new fu(); $erzi-> text("123"); ?>
La substitution n'existe que dans les sous-classes et les classes parentes, et la surcharge existe dans une seule classe.
le remplacement est une réécriture
la surcharge est une surcharge
Pour plus d'informations sur la réécriture et la surcharge, veuillez visiter le site Web PHP chinois : Tutoriel vidéo PHP
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!