Depuis une classe en Java ne peut pas s'étendre à plusieurs classes. Comment pourrais-je être en mesure d'obtenir par là?
J'ai deux classes qui ont besoin d'étendre une classe. J'obtiens une erreur de compilation puisque cela ne se fait pas en Java. Je sais que vous pouvez mettre en œuvre autant d'interfaces que vous voulez en Java, mais ne peut étendre une autre classe. Comment puis-je résoudre ce problème?
Par "j'ai deux classes qui ont besoin d'étendre une classe" je pense que vous voulez dire "j'ai une classe qui a besoin de prolonger de deux classes."
Le mieux si vous décrivez exactement ce que vous essayez d'modèle, au lieu de la plus générale "comment puis-je prolonger de deux classes".
"Comment puis-je résoudre ce problème?", il n'est pas un problème, c'est une fonctionnalité 🙂
Double Possible: Java - l'héritage Multiple
Fermés que pas une vraie question, même si elle a été perçue scc avait atteint 12 109 fois. C'est pourquoi il doit changer son comportement dès MAINTENANT!
Le mieux si vous décrivez exactement ce que vous essayez d'modèle, au lieu de la plus générale "comment puis-je prolonger de deux classes".
"Comment puis-je résoudre ce problème?", il n'est pas un problème, c'est une fonctionnalité 🙂
Double Possible: Java - l'héritage Multiple
Fermés que pas une vraie question, même si elle a été perçue scc avait atteint 12 109 fois. C'est pourquoi il doit changer son comportement dès MAINTENANT!
OriginalL'auteur Bdk Fivehunna | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Utiliser une "a Une" relation " au lieu de "est".
Vous (penser) que vous souhaitez:
Au lieu de cela, faire cela:
L'héritage Multiple est presque toujours abusé. Il n'est pas bon pour étendre des classes comme un moyen facile d'importer leurs données et les méthodes. Si vous étendre une classe, il doit être vraiment un "est Une" relation".
Par exemple, supposons que vous avez eu des classes,
Vous pouvez le faire si vous souhaitez utiliser les fonctions de la
Calculator
dansBank
,Cependant, un
Bank
est très certainement PAS unCalculator
. Une Banque utilise unCalculator
, mais il n'en est pas un lui-même. Bien sûr, en java, on ne peut pas faire de toute façon, mais il y a d'autres langues, où vous pouvez.Si vous n'achetez pas de tout ça, et si tu voulais VRAIMENT les fonctions de
Calculator
de faire partie deBank
's de l'interface, vous pouvez le faire par le biais d'interfaces Java.Une classe peut implémenter autant d'interfaces qu'il le veut. Note que c'est encore techniquement une "a Une" relation
cela dépend si vous avez besoin d'exporter les données et les méthodes de l'autre catégorie, ou tout simplement les consommer. si vous avez seulement besoin de les consommer, vous ne devriez pas faire de méthodes / données partie de votre interface (par la mise en œuvre d'interfaces). toutes les mises en œuvre des méthodes d'interface sont implicitement public.
OriginalL'auteur Jeffrey Blattman
"Deux classes qui étendent une classe" est légal.
"Une classe de l'extension de deux classes" est par rapport à la spécification de la langue. Si vous ne voulez pas considérer les interfaces, il ne peut pas être fait.
OriginalL'auteur SJuan76
Deux classes de l'extension d'UNE classe? comme:
Ici, B et C(deux classes) étendre Un(une classe).
Mais je suis sûr que vous avez voulu dire Une classe étendant Deux classes(Héritage Multiple).
Solution de contournement: vous pourriez faire un Objet composite qui a deux objets distincts(A-Une relation) comme suit:
Le problème commence au niveau de la conception. Si à tout moment, dans votre conception, vous DEVEZ hériter de deux classes, alors évidemment, vous êtes en train de concevoir le mal!
Pas du tout. Si, dans votre domaine,
E isA A
etE isA B
, puis d'une façon très logique de modèle dans le code à l'est par le biais de l'héritage multiple. Le fait que Java ne supporte pas ce n'est pas "mauvais", mais simplement "qui dérange". D'autres langues telles que la Scala, à l'appui de cette (via traits, Scala cas).Je ne dis pas que c'est mal. Par exemple, un "Fils" hérite du père et de la mère. C'est également facilement vu en C++ qui supporte l'héritage multiple. Parce que la question était "en Java" j'ai dû utiliser "A Une" relation " au lieu de "isA". Ne pas dire soit en bien ou en mal.
OriginalL'auteur Aniket Inge
Pour éviter diamant problème Java ne supporte pas l'Héritage Multiple à travers les classes, mais il prend en charge l'utilisation d'interfaces.
De sorte que vous pouvez utiliser
Association
Relation. par exemple,édité réponse. J'étais fournir plus de détails.
OriginalL'auteur Nandkumar Tekale