Pourquoi voulez-vous déclarer une Interface et ensuite instancier un objet avec Java?

Un ami et moi, nous étudions Java. Nous étions à la recherche à des interfaces d'aujourd'hui et nous avons eu un peu d'une discussion sur la façon dont les interfaces sont utilisées.

L'exemple de code mon ami m'a montré contenait ceci:

IVehicle modeOfTransport1 = new Car();
IVehicle modeOfTransport2 = new Bike();

IVehicle est une interface qui est mis en œuvre dans les catégories auto et moto.
Lors de la définition d'une méthode qui accepte IVehicle comme un paramètre, vous pouvez utiliser les méthodes d'interface, et lorsque vous exécutez le code au-dessus des objets de travail comme d'habitude. Toutefois, cela fonctionne parfaitement bien lors de la déclaration de la voiture et de vélo comme vous le feriez normalement comme ceci:

Car modeOfTransport1 = new Car();
Bike modeOfTransport2 = new Bike();

Donc, ma question est, pourquoi voudriez-vous utiliser l'ancienne méthode au cours de la dernière lors de la déclaration et l'instanciation de la modeOfTransport objets? Est-il question?

  • Donc ce qui arrive si vous voulez écrire une méthode qui prend soit une Voiture ou un Vélo comme un paramètre? Maintenant ce qui?
  • vous pouvez poster les méthodes sur la IVechical interface? Ce qui se passe lorsque vous souhaitez gérer un nouveau type d'objet ie Bus ou SpaceRocket
  • beaucoup de réponses ont été downvoted. downvoters, le soin d'expliquer pourquoi?
  • un grand nombre de réponses n'ont tout simplement pas répondre à la question.
  • D'accord, trop de downvotes sur des réponses raisonnables!
  • Je vais vous expliquer mon downvotes: tout le monde ici semble lancer dans une explication sur le polymorphisme ou le but des interfaces, qui n'est pas ce que l'OP a demandé à propos. L'OP a une question sur si immédiatement jeté à un type d'interface ou de report de la coulée jusqu'à ce que plus tard.
  • 7 de 10 réponses reçues 2 downvotes. De ceux qui n'ont, la plupart ne s'adresse la question. En tout cas, je serait impossible de les décrire comme pas utile (les critères établis pour downvote).
  • non, il n'est pas. Il a été demandé spécifiquement "pourquoi voudriez-vous utiliser l'ancienne méthode au cours de la dernière". Il ne fait même pas mention de la coulée.
  • Je suis juste en indiquant la cause probable. (Je n'ai pas downvote tout.)
  • L'OP n'a pas été demandé pourquoi utiliser une interface plus d'un type de béton. L'OP a été demandé, "pourquoi définir les variables de cette façon, au lieu de cette façon", ce qui pour moi est la même chose que de demander, "implicite fonte maintenant, ou plus tard?"
  • Je ne crois pas que c'est une déduction logique. Les deux sont très différents.
  • Quelle horrible logique de sauter! Terrible raison de downvote. Vous devriez avoir honte.
  • Je suis curieux de voir quelle réponse est acceptée! Je suis d'accord que le fait d'être potentiellement hors sujet n'est pas une raison pour voter, tant que la réponse elle-même est exacte.
  • Je devrais être beaucoup de choses.
  • Merci à Tous, la réponse à ces questions et à la discussion m'a beaucoup aidé, j'ai marqué la bonne basé Sur le vote plus élevé. Mis à part cela je ne pouvais pas décider entre Larry Watanabe ou Oscar Gomez postes. Je suis d'accord que certaines réponses semblent avoir été inutilement vers le bas voté. Merci encore.

InformationsquelleAutor bot_bot | 2011-10-10