2017-04-22 7 views
-4

Ich habe mir den Kopf geschlagen, um zu verstehen, wie der Objekt-Typ-Casting in Java funktioniert und warum er überhaupt existiert. Siehe Beispiel unten.Worauf kommt es bei der Implizierung von Objekten an?

Meine Frage ist in Form von Kommentaren unten.

Bitte nicht vorschlagen, mich irgendwo zu erreichen. Das habe ich schon gemacht. Bitte antworte mir direkt, wenn du es weißt. Vielen Dank.

Überprüfen Sie diesen Code mit der Methode 'scream' überschrieben Ich bekomme keine Kompilierzeit Fehler. Sehen Sie Kommentare zu

Animal aniObj = new Animal(); 
    Animal dogAniObj = new Dog(); 
    Dog dogObj = new Dog(); 

    ArrayList<Animal> animalArrayList = new ArrayList<Animal>(); 

    animalArrayList.add(aniObj); 
    animalArrayList.add(dogAniObj); 
    animalArrayList.add(dogObj);//Here when I am able to add the Dog object there no point in creating dogAniObj above 

    aniObj.scream();//Calls scream of Animal 
    dogAniObj.scream();//Calls scream of Dog 
    dogObj.scream();//Calls scream of Dog. Then why do i need above statement? Why to attain polymorphic behavior when we can directly call scream method with the Dog object when needed? 
+0

Willkommen bei SO. Was ist deine Frage ? – c0der

+1

Related: http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface –

+0

Wo erwarten Sie einen Kompilierungsfehler? – Bubletan

Antwort

0

Dies ist, was Java gibt Ihnen als Runtime Polymorphism, zur Laufzeit, was das Objekt Referenz hat, wird diese Methode Instanz aufgerufen werden.

Denken Sie, dass Sie einige allgemeine lib/framework schreiben dann alles, was Sie verwenden möchten Animal Klasse ist, die wie Dog, Cat Basis für alle anderen Unterklassen usw., dann können Sie nicht Ihre Mitglieder wie Dog myDog or Cat myCat erklären sollte es Animal myAnimal so sein, dass es kann alle Tierunterklassen nehmen.

Das ist warum animalArrayList sollte immer Animal und seine Varianten keine Kompilierung Fehler kommt.

Sie können nie wissen, Animal Klasse kann durch Ihre Lib Benutzer erweitert werden, um viele andere Tierklassen zu erstellen.

Verwandte Themen