Hallo,
kann mir jemand sagen wie ich einem kopierten Objekt Werte zuweise.
Ich habe 2 Klassen.
Eine Pferdeklasse und eine Sattelklasse
Wenn ich ein Pferd erstelle, übergebe ich in den Konstruktor die Attribute des Pferdes + ein Sattelobjekt und dann kopiere ich dieses Pferd(tiefe kopie).
Wie kann ich jetzt von Pferd2 die Attribute des Sattels ändern?
hier meine Sattelklasse
meine Pferdeklasse
und so rufe ich das ganze in der main-Methode auf
Als Ausgabe erhalte ich:
Ich möchte jetzt aber z.B. beim Zweiten Pferd den Preis des Sattels ändern wie mache ich das?
Vielen Dank
kann mir jemand sagen wie ich einem kopierten Objekt Werte zuweise.
Ich habe 2 Klassen.
Eine Pferdeklasse und eine Sattelklasse
Wenn ich ein Pferd erstelle, übergebe ich in den Konstruktor die Attribute des Pferdes + ein Sattelobjekt und dann kopiere ich dieses Pferd(tiefe kopie).
Wie kann ich jetzt von Pferd2 die Attribute des Sattels ändern?
hier meine Sattelklasse
Java:
public class Sattel {
private String farbe;
private String material;
private int preis;
//Konstruktor um eine kopie zu erstellen
public Sattel(Sattel s1){
this.farbe = s1.farbe;
this.material=s1.material;
this.preis = s1.preis;
}
//Konsturktor um Daten festzulegen
public Sattel(String farbe, String material, int preis) {
this.farbe = farbe;
this.material = material;
this.preis = preis;
}
//Getter and Setter
// hier kommen die Getter und Setter Methode (autom. erzeugt von Eclipse)
}
meine Pferdeklasse
Java:
public class Pferd {
private String name;
private int vmax;
private String farbe;
private Sattel s1;
//Kostruktor zur Datenzuweisung
public Pferd(String name, int vmax, String farbe, Sattel sa) {
this.name = name;
this.vmax = vmax;
this.farbe = farbe;
this.s1 = sa;
}
//Konstruktor zur Kopie
public Pferd(Pferd p1) {
this.name = p1.name;
this.vmax = p1.vmax;
this.farbe = p1.farbe;
// flache Kopie
// this.s1 = p1.s1;
// tiefe Kopie
this.s1 = new Sattel(p1.s1);
}
//toString Methode um die Daten auszugeben
public String toString() {
return this.name + " " + this.vmax + " " + this.farbe + " - Sattel: "
+ s1.getFarbe() + " , " + s1.getMaterial() + ", " + s1.getPreis()+" Euro";
}
//Getter and Setter
//hier kommen wiederrum die autom. erzeugten Getter und Setter Methoden
und so rufe ich das ganze in der main-Methode auf
Java:
public class main {
public static void main(String[] args) {
Sattel s1 = new Sattel("Braun", "Leder", 500);
Pferd p1 = new Pferd("Hans", 150, "weiss", s1);
Pferd p2 = new Pferd(p1);
System.out.println(p1.toString());
System.out.println(p2.toString());
}
}
Als Ausgabe erhalte ich:
Code:
Hans 150 weiss - Sattel: Braun , Leder, 500 Euro
Hans 150 weiss - Sattel: Braun , Leder, 500 Euro
Ich möchte jetzt aber z.B. beim Zweiten Pferd den Preis des Sattels ändern wie mache ich das?
Vielen Dank
Zuletzt bearbeitet von einem Moderator: