Maison  >  Article  >  développement back-end  >  Que sont la réécriture et la surcharge orientées objet PHP ? Quelles sont les conditions requises pour leur utilisation ?

Que sont la réécriture et la surcharge orientées objet PHP ? Quelles sont les conditions requises pour leur utilisation ?

伊谢尔伦
伊谢尔伦original
2017-07-08 09:35:481550parcourir

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, cette méthode nouvellement définie l'écrasera Pour les méthodes héritées du classe parent, 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 de la classe parent. .

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 de méthode mentionnée 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 de langages comme PHP. Ce que je comprends, c'est qu'il est plus facile d'accéder aux choses à un niveau supérieur. Si vous souhaitez accéder aux choses à un 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, mais pas 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,&#39;狗!<br/>&#39;;
    }
}
class zhen extends shao{
    public function aaa()
    {
        echo &#39;猫<br/>&#39;;
    }
}
$lli = new zhen();
$lli->aaa();
$lli->aaa(&#39;binghh&#39;);
?>
<?php
class fu
{
    public function text(){
        echo &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
}
}
class erzi extends fu{
    public function text()
    {
        parent::text();//我要父类的东西
        echo &#39;儿子&#39;;//重写

    }
}
$shili = new fu();
$erzi = new erzi();
$erzi->text();
?>

Surcharge :

La surcharge est le polymorphisme de la classe Une réalisation. La surcharge de fonction 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 paramètre numéro ou type de paramètre de la fonction, et l'appel le fait ne se produit pas Confus. 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 &#39;父类&#39;;
    }
    public  function  textt(){
        echo &#39;父亲&#39;;
    }
}
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

une surcharge est une surcharge

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