Java Héritage Multiple

Dans une tentative de comprendre pleinement comment résoudre Java héritage multiple problèmes que j'ai une question classique que j'ai besoin de clarifier.

Permet de dire que j'ai la classe Animal cela a des sous-classes Bird et Horse et j'ai besoin de faire une classe Pegasus qui s'étend de Bird et Horse depuis Pegasus est à la fois un oiseau et un cheval.

Je pense que c'est le classique de diamant de problème. De ce que je peux comprendre la manière classique pour résoudre ce problème est de faire la Animal, Bird et Horse classes d'interfaces et de mettre en œuvre Pegasus d'eux.

Je me demandais si il y avait une autre façon de résoudre le problème en ce qui me permet encore de créer des objets pour les oiseaux et les chevaux. Si il y avait un moyen pour être en mesure de créer des animaux aussi, ce serait super, mais pas nécessaire.

  • Je pense que vous pouvez créer manuellement les classes et de les stocker en tant que membres (composition à la place de l'héritage). Avec le Proxy (docs.oracle.com/javase/7/docs/api/java/lang/reflect/Proxy.html) cette classe pourrait être une option, mais vous aurez besoin d'interfaces trop.
  • J'aime @GáborBakos solution, mais le seul inconvénient est qu'il ne peut pas avoir une référence générique de type.
  • ensuite, il ne devrait pas s'étendre Oiseau plutôt avoir un comportement qui va lui permettre de prendre un vol. 😀 le problème est résolu
  • Exactement. Comment sur une interface CanFly. 🙂
  • Je pense que c'est la mauvaise approche. Vous avez des animaux - Chevaux, Oiseaux. Et vous avez propriétés de Vol, Carnivore. Une Pegasus n'est pas un HorseBird c'est un Cheval qui peut voler. Les propriétés doivent dans les interfaces. Donc public class Pegasus extends Horse implements Flying.
  • Je comprends pourquoi vous pensez que c'est mal et de ne pas respecter les règles de la biologie et de la comprenons votre inquiétude, mais en ce qui concerne le programme, j'ai besoin de construire qui a effectivement à voir avec les banques c'était la meilleure approche pour moi. Comme je n'ai pas envie de poster mon problème car cela serait contraire aux règles que j'ai changé l'exemple un peu. Merci bien...
  • Java 8 permettra aux interfaces avec les méthodes par défaut, cela permettra une limité de l'héritage multiple. Java 8 est la version la mi-mars
  • Un meilleur aper llife exemple serait de l'enfant qui a de père et de mère, à la fois l'extension de personne avec des attributs différents, alors vous pouvez hériter à la fois, un mélange ou un seul d'entre eux (comme le sexe attributs/comportement/Impl)

InformationsquelleAutor Sheli | 2014-02-17