comment faire pour hériter de plusieurs classe
Disons que j'ai un griffon objet qui doit faire partie de felidae et de la classe des oiseaux.
Comment dois-je faire ?
Je ne peux que faire hériter de 1 classe à la fois...
- Cela peut aider : stackoverflow.com/questions/4192203/...
Vous devez vous connecter pour publier un commentaire.
Cela peut aider...
L'héritage Multiple
Il n'est pas innée de l'héritage multiple (bien sûr, certains voient cela comme un avantage). Pour obtenir autour de lui, vous pouvez créer une classe de composés, c'est à dire une classe avec des variables d'instance qui sont les id des autres objets. Cas spécifique de rediriger les messages de n'importe quelle combinaison des objets qu'ils sont composés de. (Il n'est pas beaucoup de tracas, et vous avez un contrôle direct sur l'héritage de la logistique.) [Bien sûr, ce n'est pas "contourner le problème de ne pas avoir l'héritage multiple', mais juste de la modélisation de votre monde légèrement différent de telle manière que vous n'avez pas besoin de l'héritage multiple.]
Protocoles adresse de l'absence d'héritage multiple (MI) dans une certaine mesure: Techniquement, les protocoles sont équivalentes à MI pour des raisons purement "abstrait" des classes (voir la réponse sur les "Protocoles" ci-dessous).
[Comment Délégation place ici? Délégation est l'extension d'une classe de fonctionnalité d'une manière anticipée par le concepteur de la classe, sans avoir besoin de sous-classement. On peut, bien sûr, les délégués de plusieurs objets de classes différentes. ]
-Pris de http://burks.brighton.ac.uk/burks/language/objc/dekorte/0_old/intro.htm
L'Héritage Multiple en C Objectif n'est pas pris en charge. La raison de ne pas soutenir ce mécanisme pourrait être le fait qu'il aurait été trop difficile de les inclure dans la langue ou les auteurs ont pensé que c'est une mauvaise programmation et de décision de conception. Cependant, dans plusieurs cas, l'héritage multiple s'avère utile. Heureusement objective-C fournit quelques solutions de contournement pour la réalisation de l'héritage multiple. Options:
Option 1: Transfert De Message
Transfert de Message, comme son nom l'indique, est un mécanisme offert par l'Objectif C de l'exécution. Lorsqu'un message est transmis à un objet et l'objet n'a pas répondu, l'application se bloque. Mais avant de s'écraser l'objectif c runtime fournit une seconde chance pour le programme à transmettre le message à l'objet propre/classe qui réponde réellement à elle. Après avoir suivi le message jusqu'au sommet de la plupart des super-classe, la
forwardInvocation
message est appelé. En substituant cette méthode, on peut rediriger le message vers une autre classe.Exemple: Si il y a une classe nommée Voiture qui possède une propriété nommée carInfo qui offre la voiture de la marque, le modèle et l'année de fabrication et le carInfo contient les données dans NSString format, il serait très utile si NSString les méthodes de la classe peut être appelée sur les objets de la classe de Voiture qui, en fait, hérite de NSObject.
Source: iOS 4 Developer cookbook - Erica Sadun
Option 2: Composition
Composition est un cacao modèle de conception qui implique la référence à un autre objet et en appelant ses fonctionnalités chaque fois que nécessaire. La Composition est en fait une technique en vue de construire lui-même basé sur plusieurs autres points de vue. Ainsi, dans le Cacao, la terminologie ceci est très similaire à sous-classement.
Source: Objective-C de l'héritage multiple
Option 3: Protocoles De
Protocoles sont des classes qui contient la méthode à mettre en œuvre par d'autres classes qui mettent en œuvre le protocole. Une classe peut implémenter autant que des protocoles et peut mettre en œuvre les méthodes. Cependant, avec les protocoles seulement sur des méthodes peut être héréditaire et non les variables d'instance.
Vous ne pouvez pas, en soi. Mais vous pouvez avoir des références à de nombreux autres objets que vous avez besoin et vous pouvez utiliser plusieurs protocoles.
Vous pouvez créer dynamiquement une classe au moment de l'exécution et de choisir les méthodes de chaque classe parent d'hériter. Jetez un oeil à la Prochaine exécution de la documentation ici à propos de la création dynamique des classes. Je l'ai fait une fois, juste pour le plaisir, mais je n'ai pas aller très loin car il devient incroyablement bordélique très rapidement.
Modifier
Il devient de plus en plus difficile, car il ne peut être une super-classe, sinon le mot-clé
super
devient ambigu.Tout d'abord, faire des felidae une sous-classe d'oiseau. Morceau de gâteau. 🙂