Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Objekte klonen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem lernen Sie, wie man Objekte kopiert. Java sieht hierfür einen speziellen Mechanismus vor, für den eine Methode mit dem Namen clone() in die "Urvater-Klasse" Object eingebaut wurde. Um den Mechanismus zu ermöglichen, müssen die Java-Klassen diese Methode überschreiben.

Transkript

In diesem Video zeige ich Ihnen, wie man Objekte kopiert. Java hat hierfür einen speziellen Mechanismus vorgesehen, für den eine Methode mit dem Namen Clone in die Urvaterklasse Object eingebaut wurde. Um den Mechanismus zu ermöglichen, müssen die Java-Klassen diese Methode überschreiben. Um Ihnen das nun zu zeigen, werde ich jetzt wieder mit den Modellklassen des durchgehenden BMI-Programms abreiten. Ich erstelle also eine Java Bin Klasse, die ich Katze nennen werde. Hierfür gehe ich ins Hauptmenü, dann auf File New, dann auf Class. Ich nenne die Klasse Katze und füge sie in das Package de.java2enterprise.bmi.model ein In der Klasse Katze werde ich zwei Eigenschafts-Felder Groesse und Gewicht reinsetzen. Also private, beide Eigenschafts-Felder sollen vom elementaren Datentyp Double sein. Also private double groesse und private double gewicht. So jetzt brauche ich noch Getter und Setter und schon bin ich mit meiner Java-Klasse mit dem Namen Katze fertig. So und nun zeige ich Ihnen, wie man die Klasse Katze kopierbar macht. Und zwar ist es so, dass jede Klasse, die kopierbar sein soll, eine eigene Methode mit dem Namen Clone anbieten muss. In dieser Methode Clone wird dann ein neues Objekt der Klasse erzeugt und in die Eigenschafts-Felder dieses neuen Objekts werden dann alle Werte des aktuellen Objekts hineinkopiert. Wenn eine Klasse die Methode Clone nicht überschreibt, dann löst beim Aufruf die Urvater-Klasse Objekt eine Clone Not Supported Exception aus. Daher sind wir für den Fall, dass wir die Methode Clone verwenden wollen, sogar gezwungen die Methode Clone zu überschreiben. Ich überschreibe also die Methode Clone, die Annotation Override nutze ich hierbei auch. Und dann schreibe ich public Object ist der Rückgabewert und die Methode nenne ich clone und dann setze ich die geschweiften Klammern für den Anweisungsblock noch hinzu. So jetzt müssen wir noch etwas zurückliefern. return null, hierbei wird es sich gleich um das Objekt handelt, das wir jetzt neu erzeugen. Und zwar werden wir jetzt innerhalb der Methode Clone eine Variable des Typs Katze deklarieren. Also Katze, die Variable nenne ich mal clone =, und dieser Variablen werde ich jetzt ein Objekt der Klasse Katze zuweisen und zwar ein ganz neues Objekt. new Katze und dabei wird also ein komplett neuer Speicherbereich geschaffen, auf den die Variable Clone, das heißt der Zeiger mit dem Namen clone dann referenziert. Und jetzt kopiere ich alle Eigenschafts Felder in das neue Objekt. Wenn es sich bei den Eigenschafts-Feldern um elementare Variablen einer Wrapper Klasse oder die Klasse String handelt, dann ist es einfach. Dann muss ich den Wert nämlich einfach bloß der Setter Methode übergeben. In unserem Beispiel ist es ja so, deshalb haben wir es an dieser Stelle sehr einfach. Ich besorge mir die Variable clone und rufe dort über setGroesse die Methode auf, mit der ich die groesse setze. Und ich übergebe also dem Geklonten Objekt die Groesse des aktuellen Objekts. Und jetzt mache ich das Gleiche mit dem Gewicht. clone.setGewicht. Und bin dann hiermit fertig und als Rückgabewert liefere ich dann abschließend die Variable clone. Abschließend werde ich auch noch die Methode To String überschreiben, um es mir später bei der Ausgabe der Katzenattribute einfach zu machen Hierfür gehe ich jetzt auf Source und dann auf Generate toString (). Hier werden mir die Eigenschafts-Felder angeboten, die ich hierbei verwendet haben möchte, die dann ausgegeben werden. Das passt soweit ganz gut. Deshalb klicke ich einfach auf OK. Sie sehen hier unten, dass die To String Methode überschrieben worden ist. Gut, vielleicht sollte ich bei der Klasse Katze auch noch einen weiteren Constructor hinzufügen damit ich es bei der Erstellung der Katzen Objekte nachher einfacher habe. Hierfür schreibe ich public Katze und diesen Convenient Construct füge dich dann zwei Übergabe Parameter hinzu, einmal double groesse , double gewicht. Hierdurch kann ich es dann einfach haben, indem ich die beiden Eigenschafts-Felder mit einer Anweisung mit abgebildet habe. Also this.groesse = groesse und this.gewicht = gewicht Jetzt habe ich einen Konstruktor der mir nachher weiterhelfen wird und das ganze etwas vereinfachen wird. Aufgrund meines eigenen Konstruktors wird mir Java natürlich nicht mehr den Default Konstruktor zur Verfügung stellen, deshalb muss ich den jetzt selber nochmal neu schreiben, sonst stimmt unser Programm hier unten nicht mehr. Hier benutzen wir ja den Default Konstruktor. Deswegen muss ich noch zusätzlich einen hinzufügen. Aber dann bin ich auch mit der Klasse Katze fertig. So das speichere ich noch ab. Jetzt öffne ich die Startklasse App und deklariere dort eine Variable mit dem Bezeichner Katze1. Ich möchte ja eine Katze gruppieren und meine Quellkatze wird die Katze1 sein. Ich deklariere also zunächst mal eine Variable des Typs Katze und die nenne ich Katze1 und nur zur Wiederholung: Bei einer Variablen handelt es sich bei Java um eine Art Zeiger. Bislang haben wir den Zeiger noch nicht initialisiert, weshalb der Compiler mit uns schimpfen würde, wenn wir den Zeiger beziehungsweise die Variable in weiteren Anweisungen verwenden würden. Ich muss der Variablen also zunächst mit dem Zuweisungsoperator ein Objekt des Typs Katze zuweisen. Deswegen füge ich einen Zuweisungsoperator hinzu und dann schreibe ich new Katze hin. Jetzt habe ich der Variablen katze1 ein neue Objekt des Typs Katze zugewiesen. Durch den Ausdruck new Katze weise ich also an, dass ein Bereich des Typs Katze im Arbeitsspeicher angelegt werden soll. Gleichzeitig kann ich aber in unserem Fall der Katze eine groesse und ein gewicht zuweisen, da wir ja einen entsprechenden Konstruktor anbieten. Also die Groesse ist 0,51 und das Gewicht 6,1 und somit haben wir jetzt eine Katze mit einer Groesse und einem Gewicht. Als nächstes deklariere ich eine weitere Variable, die ich katze2 nennen werde. So und dieser Variablen katze2 weise ich den Rückgabewert der Methode Clone zu. Und zwar von der Variablen katze1. Also katze1.clone() und nun ist der Rückgabewert der Methode Clone ja vom Typ Object und deswegen brauche ich einen Cast und jetzt habe ich die katze1 geklont und habe nun zwei Katzen, zwei Bereiche im Arbeitsspeicher und beide sind geklont, weil sie die gleichen Eigenschafts-Felder beziehungsweise die gleichen Werte in den Eigenschafts-Feldern enthalten. Wir schauen uns das Ergebnis mal auf der Konsole an. Und zwar füge ich jetzt zwei System Out Print Lines hinzu und lasse mir die Katzen mal ausgeben Also Sysout und ich gebe einmal die Katze1 aus und das gleiche mache ich mit der zweiten Katze. Dann klicke ich auf Play und dann sehen Sie, dass die Katzen hier identisch sind. In diesem Video habe ich Ihnen gezeigt, wie man Objekte mit Java kopiert. Java hat hierfür einen speziellen Mechanismus vorgesehen, für den eine Methode mit dem Namen Clone in die Urvaterklasse Object eingebaut wurde. Um den Mechanismus zu ermöglichen, müssen die Java-Klassen diese Methode überschreiben.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Steigen Sie tiefer in die Java-Programierung ein und lernen Sie den Umgang mit generischen Typen, Lamda-Ausdrücken, DAtenströmen und mit Datums- und Zeitberechnung.

5 Std. 24 min (47 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:09.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!