Warum würden Sie deklarieren Sie ein Interface und dann instantiieren ein Objekt mit dem es in Java?

Einen Freund und ich studieren, Java. Wir waren auf der Suche, an den Schnittstellen, die heute und wir haben in ein bisschen eine Diskussion darüber, wie Schnittstellen verwendet werden.

Den Beispiel-code mein Freund mir zeigte, enthalten diese:

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

Wo IVehicle ist ein interface, dass implementiert ist sowohl in der Auto-und Motorrad-Klassen.
Bei der Definition einer Methode, die akzeptiert IVehicle als parameter können Sie die interface-Methoden, und wenn Sie den code ausführen der oben genannten Objekte normal arbeiten. Das funktioniert aber völlig in Ordnung, wenn man erklärt, das Auto und Fahrrad, wie Sie normalerweise würden, wie diese:

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

So, meine Frage ist - warum würden Sie die frühere Methode, in den letzteren bei der Deklaration und der Instanzierung der modeOfTransport Objekte? Spielt es eine Rolle?

  • Was passiert also, wenn Sie wollen, schreiben Sie eine Methode, braucht entweder ein Auto oder ein Fahrrad als parameter? Was nun?
  • kannst du die Methoden auf die IVechical-Schnittstelle? Was passiert, wenn Sie behandeln möchten ein neues Objekt Typ ie-Bus oder SpaceRocket
  • viele Antworten wurden downvoted. downvoters, Pflege zu erklären, warum?
  • eine Menge von den Antworten einfach nicht auf die Frage.
  • Stimmen, zu viele downvotes auf vernünftige Antworten!
  • Ich erkläre meine downvotes: jeder scheint hier zu starten, in einer Erklärung über Polymorphismus oder der Zweck von interfaces, die ist nicht das, was der OP gefragt. Die OP wurde Sie gefragt, ob Sie sofort gegossen, um ein interface-Typ oder aufzuschieben, das casting, bis später.
  • 7 von 10 Antworten erhielt 2 downvotes. Von denen, die haben, die meisten haben die Frage. In jedem Fall würde ich das kaum bezeichnen Sie als nicht sinnvoll (die angegebenen Kriterien für die downvote).
  • Nein, das war er nicht. Er wurde gefragt, speziell "warum würden Sie die frühere Methode, in den letzteren". Er hat nicht einmal erwähnt Gießen.
  • Ich bin nur unter Angabe der wahrscheinlichen Ursache. (Ich wusste nicht downvote vorhanden.)
  • Die OP war nicht gefragt, warum eine Schnittstelle über einen konkreten Typ. Die OP wurde Sie gefragt, "warum definieren Sie die Variablen in dieser Art und Weise statt, dass die Art und Weise", was für mich das gleiche wie zu Fragen, "impliziten cast jetzt, oder später?"
  • Ich glaube nicht, dass sich eine logische Schlussfolgerung. Die beiden sind unglaublich Verschieden.
  • Was für eine schreckliche Logik Sprung! Schreckliche Grund, downvote. Sie sollten sich schämen.
  • Ich bin gespannt, welche Antwort wird akzeptiert! Ich bin damit einverstanden, dass eventuell off-topic, ist kein Grund für eine down-vote, solange die Antwort selbst richtig ist.
  • Ich sollte eine Menge Dinge.
  • Danke an Alle, die Antworten und die Diskussion hat mir sehr geholfen, ich kenn die richtige ist, basiert Auf der höheren Abstimmung. Abgesehen davon, dass ich nicht entscheiden konnte zwischen Larry Watanabe oder Oscar Gomez Beiträge. Ich bin damit einverstanden, dass einige der Antworten zu haben scheinen, wurde unnötig nach unten gestimmt. Nochmals vielen Dank.

InformationsquelleAutor bot_bot | 2011-10-10
Schreibe einen Kommentar