Hallo,
Ich habe hier eine Übungsaufgabe, die ich bearbeitet habe. Teils musste ich dazu in die Musterlösung schauen, die mich etwas verwundert hat. In der Übung geht es eigentlich darum, Objekte zu klonen, aber meine Frage bezieht sich auf den Konstruktor der Klasse Auto.
Im Konstruktor der Klasse Auto steht folgendes:
Bedeutet also: Jedes mal, wenn ich ein Auto-Objekt erstelle, wird mir auch ein AutoReifenSatz-Objekt erstellt. Das Autoobjekt hat dann die Referenz zu diesem AutoReifenSatz.
Was ich aber irgendwie unlogisch finde ist, wenn ich mehr als 1 Autoobjekt erzeuge (Z.b. 3 Autos). Dann gäbe es doch auch 3 AutoReifenSatzObjekte, allerdings alle mit der selben Referenzvariable "reifen". Wieso funktioniert das?
Ich kann ja auch nicht z.b. 3 Integer-Variablen erstellen, die alle den selben Namen haben:
Hier der Code:
Ich habe hier eine Übungsaufgabe, die ich bearbeitet habe. Teils musste ich dazu in die Musterlösung schauen, die mich etwas verwundert hat. In der Übung geht es eigentlich darum, Objekte zu klonen, aber meine Frage bezieht sich auf den Konstruktor der Klasse Auto.
Im Konstruktor der Klasse Auto steht folgendes:
Java:
reifen = new AutoReifenSatz(typ2, anzahl);
Was ich aber irgendwie unlogisch finde ist, wenn ich mehr als 1 Autoobjekt erzeuge (Z.b. 3 Autos). Dann gäbe es doch auch 3 AutoReifenSatzObjekte, allerdings alle mit der selben Referenzvariable "reifen". Wieso funktioniert das?
Ich kann ja auch nicht z.b. 3 Integer-Variablen erstellen, die alle den selben Namen haben:
Java:
int x = 5;
int x = 5421;
int x = 7;
Hier der Code:
Java:
public class AutoReifenSatz {
private String typ;
private int anzahl;
public AutoReifenSatz(String typ, int anzahl) {
this.typ = typ;
this.anzahl = anzahl;
}
public String getTyp(){
return typ;
}
public int getAnzahl(){
return anzahl;
}
void setTyp(String typ){
this.typ = typ;
}
void setAnzahl(int anzahl){
this.anzahl = anzahl;
}
}
Java:
public class Auto implements Cloneable {
private String typ;
private AutoReifenSatz reifen;
public Auto(String typ, String typ2, int anzahl) {
this.typ = typ;
reifen = new AutoReifenSatz(typ2, anzahl);
}
void setTyp(String typ) {
this.typ = typ;
}
void setAutoReifenSatz(AutoReifenSatz reifen) {
this.reifen = reifen;
}
public String getTyp() {
return typ;
}
public AutoReifenSatz getReifen() {
return reifen;
}
public String toString() {
return "Autotyp: "+this.typ+"\n Reifenanzahl: "+reifen.getAnzahl()+"\n Reifentyp: "+reifen.getTyp()+"\n";
}
public Auto clone() throws CloneNotSupportedException {
return (Auto)super.clone();
}
}
Java:
public class App {
public static void main(String[] args) throws CloneNotSupportedException {
Auto Audi = new Auto("Audi", "SommerReifen", 4);
Auto Mercedes = Audi.clone();
Mercedes.setTyp("Mercedes");
Mercedes.getReifen().setTyp("Winterreifen");
System.out.println(Audi.toString());
System.out.println(Mercedes.toString());
}
}