private void Form1_Load(object sender, EventArgs e) { // Ein Objekt vom Typ Fahrzeug erstellen Fahrzeug meinFahrzeug = new Fahrzeug(); meinFahrzeug.Beschleunigen(10); Console.WriteLine(meinFahrzeug); // Objekt "meinFahrzeug" kopieren // - Methode Clone() wird auf "meinFahrzeug" angewandt => "meinFahrzeug" wird kopiert // - (Fahrzeug) : Das ist ein Cast (eine Umwandlung). Clone() liefert als Rückgabe // object => Das muss noch explizit in den Datentyp "Fahrzeug" umgewandelt // werden // - Diese neu erzeugte Kopie wird der Variablen "meinZweitesFahrzeug" zugewiesen Fahrzeug meinZweitesFahrzeug = (Fahrzeug)meinFahrzeug.Clone(); // Nach der Kopie Console.WriteLine("Nach der Kopie:"); Console.WriteLine("Erstes Fahrzeug: " + meinFahrzeug); Console.WriteLine("Kopiertes Fahrzeug: " + meinZweitesFahrzeug); // Beide Fahrzeuge beschleunigen meinFahrzeug.Beschleunigen(10); meinZweitesFahrzeug.Beschleunigen(50); Console.WriteLine("Nach dem Beschleunigen"); Console.WriteLine("Erstes Fahrzeug: " + meinFahrzeug); Console.WriteLine("Kopiertes Fahrzeug: " + meinZweitesFahrzeug); }
// Clone() wird in der Schnittstelle ICloneable definiert public object Clone() { // Gibt ein neues Fahrzeug zurück, das die // Eigenschaften des bestehenden Fahrzeugs besitzt // Neues Fahrzeug erstellen Fahrzeug neuesFahrzeug = new Fahrzeug(); // Alle Eigenschaften des aktuellen Fahrzeugs übernehmen // this: optional neuesFahrzeug.geschwindigkeit = this.geschwindigkeit; // Neues Fahrzeug zurückgeben return(neuesFahrzeug); }