Hallo
warum fügt man hier die Schnittstelle Cloneable hinzu, obwohl die Methode clone vom Object ist. Braucht es überhaupt die Schnittstelle Cloneable, um die Methode clone zu implementieren?
Und warum ruft man in der Methode clone() wiederum die oberklasse.methode auf(super.clone())?
Man könnte es doch direkt aufrufen, objekt1.clone() oder ist meine Behauptung falsch?
danke kostonstyle
warum fügt man hier die Schnittstelle Cloneable hinzu, obwohl die Methode clone vom Object ist. Braucht es überhaupt die Schnittstelle Cloneable, um die Methode clone zu implementieren?
Code:
package kapitel_17;
class Motor {
String name;
Motor(String s) {
name = s;
}
}
class Auto implements Cloneable {
int maxGeschw;
String name;
Motor motor;
Auto(String name, String motor, int maxGeschw) {
this.name = name;
this.motor = new Motor(motor);
this.maxGeschw = maxGeschw;
}
protected Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
}
public String toString() {
return name + ", " + maxGeschw + ", " + motor.name;
}
}
class FlacheKopie {
public static void main(String[] args) {
System.out.println();
System.out.println("\n Zwei Auto-Objekte\n");
Auto wagen1 = new Auto("Porsche", "Porsche", 280);
Auto wagen2 = new Auto("VW", "VW", 180);
System.out.println("\t Wagen 1: " + wagen1);
System.out.println("\t Wagen 2: " + wagen2);
System.out.println("\n wagen2 = wagen1.clone() \n");
wagen2 = (Auto) wagen1.clone();
System.out.println("\t Wagen 1: " + wagen1);
System.out.println("\t Wagen 2: " + wagen2);
System.out.println("\n Wagen 2 mit neuer Hoechstgeschwindigkeit und neuem Motor \n");
wagen2.maxGeschw = 120;
wagen2.motor.name = "VW";
System.out.println("\t Wagen 1: " + wagen1);
System.out.println("\t Wagen 2: " + wagen2);
}
}
Code:
protected Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
return null;
}
danke kostonstyle