2011-01-05 3 views
3

Doublons possibles:
purpose of interface in classes
What is the difference between an interface and abstract class?Quels sont les avantages des interfaces et des classes abstraites?

Salut, je suis un programmeur php. n'importe quel corps peut expliquer quel est l'avantage d'utiliser l'interface et la classe abstraite.

+0

Référence: http://www.php.net/manual/fr/language.oop5.interfaces.php –

+1

Une copie possible de http://stackoverflow.com/questions/1913098/php-what-is-the -différence-entre-une-interface-et-classe-abstraite – Saul

+1

... ou tout autre des millions de ressources qui s'y trouvent (notez que les ressources agnostiques du langage devraient s'appliquer ici aussi, donc vous pouvez éviter le parfois effrayant bas exemples de qualité PHP). – delnan

Répondre

11

Le principal avantage d'une interface est qu'elle vous permet de définir un protocole à implémenter pour qu'un objet ait un comportement. Par exemple, vous pourriez avoir une interface Comparable avec une méthode de comparaison pour les classes à implémenter, et chaque classe qui l'implémente aurait une méthode standardisée de comparaison.

Les classes abstraites vous permettent de définir une base commune pour plusieurs classes concrètes. Par exemple, disons que vous vouliez définir des classes représentant des animaux:

abstract class Animal { 
    abstract protected function eat(); 
    abstract protected function sleep(); 
    public function die() { 
     // Do something to indicate dying 
    } 
} 

Dans ce cas, nous définissons eat() et sleep() comme abstraite parce que les différents types d'animaux (lion, ours, etc.) qui vont hériter de Animal manger et dormir de différentes façons. Mais tous les animaux meurent de la même façon (ne me tenez pas à cela), donc nous pouvons définir une fonction commune pour cela. L'utilisation d'une classe abstraite nous a aidé à: 1.) déclarer certaines méthodes courantes que tous les Animal devraient avoir, et 2.) définir un comportement commun pour Animal s. Ainsi, lorsque vous étendez Animal, vous ne devrez pas réécrire le code pour die().

Questions connexes