Quand à mettre en œuvre et étendre?
- Quand dois -
implement
ouextend
être utilisé? - Ce sont quelques exemples du monde réel?
Est-ce correct?
La mise en œuvre de semble être une façon d'appliquer certaines méthodes dans une classe, et que ces méthodes appels de fonction sont correctement formatés. La mise en œuvre est pas un moyen de passer des variables ou "paramètres" à la classe si?
Devrait scénario de la vie réelle: j'ai un e-commerce plate-forme mettant en vedette plusieurs classes de paiement qui suivent tous la même conception de. Lorsqu'un nouveau paiement de la classe doit être ajouté, il est vraiment facile de suivre la définition de la conception de la interface
pour s'assurer que tous les morceaux sont là, depuis le début.
L'extension de classes fait de l'étendue (enfant?) classe hérite de tout, de sa classe parente, à l'exception des méthodes & variables déclarées comme private
?
Devrait scénario de la vie réelle: j'ai une classe appelée sessions
avec deux classes enfant nommé sessioncookies
et databasesessions
. sessioncookies
et databasesessions
, ensemble hériter d'un certain nombre de mutuelles options de la configuration de leurs parents des sessions, ce qui rend facile de changer une option de configuration pour affecter toutes les sortes de l'éventuel visiteur de stockage de données.
- Je vous recommande de lire sur l'héritage.
Vous devez vous connecter pour publier un commentaire.
L'héritage est utile pour réduire la quantité de code de réécriture. Si vous avez plusieurs classes avec quelques méthodes communes ou dans les champs, au lieu de la définition de ces méthodes et de champs de plus et plus vous pouvez les placer dans une classe de base et ont chacun de l'enfant des classes d'étendre cette classe de base.
Interfaces (et
implements
) sont utiles lorsque vous souhaitez définir d'un commun protocole de la façon dont un groupe d'objets doit se comporter. Par exemple, vous pourriez vouloir mandat que les objets qui sont comparables peut être comparé pour l'égalité et hachés, etc.L'utilisation de l'héritage est en fin de compte un choix de conception. Être à l'affût pour les cas où vous définissez les mêmes méthodes à l'échelle de plusieurs classes; ce sont d'excellents cas où vous pouvez vous tenir compte de ces méthodes dans une classe de base. Il en va de même pour les classes d'observer certaines de ses caractéristiques: vous pouvez garantir la cohérence, en plaçant ces caractéristiques dans une interface à être mis en œuvre par ces classes associées.
L'héritage est un grand concept de la programmation orientée objet qui va bien au-delà de PHP. Je vous recommande de lire l'article de wikipedia sur l'héritage et peut-être Les Design Patterns par la bande des Quatre.
Je crois que votre compréhension de l'héritage est essentiellement correcte. La prochaine étape serait de l'utiliser en production.
Mettre en œuvre:
Les Interfaces sont des classes abstraites, de sorte que vous pouvez le faire seulement les choses. Une classe implémente une interface. Vous pouvez mettre en œuvre plusieurs interfaces.
Étendre:
Vous étendre classes lorsque vous voulez une version spécifique d'une classe.
Exemple:
À la fois Camel et le Chien sont des Animaux, donc ils s'étendent
Animal
classe. Mais seul le Chien peut être un Animal de compagnie!