예제 #1
0
        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);
        }