Maison  >  Article  >  développement back-end  >  Différences et choix de classes abstraites et d'interfaces en PHP

Différences et choix de classes abstraites et d'interfaces en PHP

不言
不言original
2018-04-08 15:12:381034parcourir

Cet article présente les différences et les choix de classes et d'interfaces abstraites en PHP. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Différences :

1. L'interface est utilisée via le mot-clé Implements. L'utilisation de classes abstraites se fait via le mot-clé extends. Bien entendu, les interfaces peuvent également être héritées via le mot-clé extends.

2. Les variables membres (y compris les variables statiques de classe) ne peuvent pas être déclarées dans l'interface, mais les constantes de classe peuvent être déclarées. Différents types de variables membres peuvent être déclarés dans des classes abstraites pour implémenter l'encapsulation des données.


[php] voir en clair copier


<?php   
abstract class Father {  
    function meth1() {  
        echo "meth1...<br>";  
    }  
    abstract function meth2();  
    public $var1="var1";  
    public static $var2="var2";  
    const Var3="Var3";  
}  
class Son extends Father {  
    function meth2() {  
        echo "meth2 of Son...<br>";  
    }  
}  
$s=new Son();  
echo $s->var1."<br>";  
echo Father::$var2."<br>";  
echo Father::Var3."<br>";  
  
  
Interface IFather {  
    //public $iVar1="iVar1";        此处接口定义中不能包含成员变量  
    //public static $iVar2="iVar2"; 此处接口定义中不能包含静态变量  
    const iVar3="iVar3";  
    function iMeth1();  
}  
Class ISon implements IFather {  
    function iMeth1() {  
        echo "iMeth1...<br>";  
    }  
}  
$is=new ISon();  
echo IFather::iVar3;  
?>

3. Les interfaces n'ont pas de constructeurs, mais les classes abstraites peuvent avoir des constructeurs.

4. Les méthodes des interfaces sont de type public par défaut, tandis que les méthodes des classes abstraites peuvent être modifiées avec private, protected ou public.

5. Une classe peut implémenter plusieurs interfaces en même temps, mais une classe ne peut hériter que d'une seule classe abstraite.


Classe ou interface abstraite. (La principale différence est que l'abstraction ne peut être héritée que par un seul, tandis que l'interface peut être héritée par plusieurs )

  • Si vous souhaitez créer un modèle qui sera adopté par certains objets étroitement liés, vous pouvez utiliser des classes abstraites. Utilisez des interfaces si vous souhaitez créer des fonctionnalités qui seront adoptées par un certain nombre d'objets non liés.

  • Utilisez des interfaces si le comportement doit être hérité de plusieurs sources.

  • Si vous savez que toutes les classes partageront une implémentation de comportement commune, utilisez une classe abstraite et implémentez ce comportement en son sein.


  • La principale différence est que l'abstraction ne peut avoir qu'un seul héritage , tandis que l'interface Les interfaces peuvent être héritées de plusieurs sources

Recommandations associées :

Concepts et différences entre les classes abstraites et les interfaces 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!

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