Wie kopiere ich dieses Objekt?

VBKenner

Mitglied
Tester.java:17: cannot find symbol
symbol: constructor Bulldogge(Bulldogge)
location: class Bulldogge
Bulldogge kopieVonDogge = new Bulldogge(dogge);

Code:
 import java.util.*;
 
 public class Tester {
 	public static void main(String args[]) {
 		Bulldogge dogge = new Bulldogge("Brutus");
 		Bulldogge nochEineDogge = new Bulldogge("Luzifer");
 		dogge.addBekanntesTier(nochEineDogge);
 		Bulldogge nochNochEineDogge = new Bulldogge("Bello");
 		dogge.addBekanntesTier(nochNochEineDogge);
 		//dogge.removeBekanntesTier(nochEineDogge);	
 		//System.out.println(dogge.getName());
 		dogge.printAllNames();
 		
 		System.out.println("-----------------------");
 		
 		System.out.println(dogge.getName());
 		Bulldogge kopieVonDogge = new Bulldogge(dogge);
 	}
 }
 
 abstract class Haustier {
 	private String name;
 	private List<Haustier> bekannteTiere;
 	
 	public Haustier(String xName) {
 		name = xName;
 		bekannteTiere = new ArrayList();
 	}
 	
 	public Haustier(Haustier haustierObjekt) {
 		name = haustierObjekt.getName();
 		
 	}
 	
 	
 	public abstract void gibLaut();
 
 	public void addBekanntesTier(Haustier tierName) {
 		bekannteTiere.add(tierName);
 	}
 	public void removeBekanntesTier(Haustier tierName) {
 		bekannteTiere.remove(tierName);
 	}
 	
 	
 	
 	public void printAllNames() {
 		for(int count = 0; count <= bekannteTiere.size() - 1; count++) {
 			Haustier haustierTemp = bekannteTiere.get(count);
 			System.out.println(haustierTemp.name);
 		}
 	}
 	
 	public String getName() {
 		return name;
 	}	
 }
 
 class Hund extends Haustier {
 	public Hund(String xName) {
 		super(xName);
 	}
 	
 	public void gibLaut() {
 		System.out.println("Wuff");
 	}
 }
 
 class Bulldogge extends Hund {
 	public Bulldogge(String xName) {
 		super(xName);
 	}
 	
 	public void gibLaut() {
 		System.out.println("Grrr");
 	}
 }
 
Tach,
entweder musst Du alle Attribute auf das neue Objekt übernehmen, oder mit clone() arbeiten.

Das hier

Bulldogge kopieVonDogge = new Bulldogge(dogge);

geht jedenfalls nicht, weil es keinen Konstruktor a la

public Bulldogge(Bulldogge newbulldog)

gibt.
 
Wie meinst du das mit clone()?
Das ist doch eine Methode von dem ListArray.

Und den Konstruktor umändern kann ich nicht, da er ja auch Hund-Objekte erstellen soll.
 
Moin,

>Wie meinst du das mit clone()?
>Das ist doch eine Methode von dem ListArray.

Nein. clone() ist eine Methode von Object.

>Und den Konstruktor umändern kann ich nicht, da er ja auch Hund-Objekte erstellen soll

Dann implementiere doch einfach einen weiteren Konstruktor. :)
 
Hi VBKenner!

Snape meint, dass du in der Klasse Haustier die Methode clone() implementieren solltest. Dann hättest du folgende Möglichkeit:
Code:
public class Tester {
 	public static void main(String args[]) {
 		Bulldogge dogge = new Bulldogge("Brutus");
 		...
 		Bulldogge kopieVonDogge=dogge.clone();
 	}
 }

Wenn du nichts mit clone() anzufangen weißt: 1, 2, 3 .
Oder einfach mal Google fragen.

MfG
Sebastian
 
Zurück