Hallo,
angenommen ich habe zwei Klassen:
public class Basis
{
}
public class Kind : Basis
{
}
Nun funktioniert ja folgendes:
Kind kind = new Kind();
Basis basis;
basis = kind;
Wie kann ich nun elegant folgendes herstellen
Kind kind;
Basis basis = new Basis();
kind = basis;
Mehr als einen Konstruktor, der an dieser Stelle die Basis entgegennimmt, ist mir nicht eingefallen. Gibt es vielleicht noch einen besseren Weg?
Bevor der Thread geschlossen wird.... 😉
Wenn du mal ein paar Grundlagen über Objektorientierung durchstöberst...
http://openbook.galileocomputing.de/oop/
vor allem eventuell die Geschichte mit Vererbung,
dann wirst du schnell rausfinden warum Version 1 geht und Version 2 nicht...
Hi TWolf,
willst du so etwas wie in Vererbung: bei Instanziierung einer Kindklasse alle Eigenschaften der übergebenen Basisklasse setzen ?
Dann ist das keine gute Idee, s. Beitrag von herbivore
Hallo M@TUK,
warum Version zwei nicht geht ist mir klar, ich hatte jedoch nach einer eleganten Methode gefragt um es zu implementieren.
Hast du hierzu vielleicht eine Idee?
Hi...
warum Version zwei nicht geht ist mir klar
sorry... aber das glaub ich dir nicht, sonst würdest du nicht
fragen wie man das eleganter implementieren kann.
Es geht nicht...
Aber erklär mal was du genau damit vorhast... so wird das auf alle Fälle nichts...
Hallo M@TUK,
mit dem Beispiel ging es mir auch nur darum zu verdeutlichen was ich gerne möchte und welches Ziel ich verfolge. Sicherlich hätte ich das Beispiel besser oder die Beschreibung deutlicher schreiben können.
Warum das ganze nicht funktioniert ist ja eigentlich logisch und mit einem einfachen Text-Beispiel erklärt: Ente ist immer Lebewesen, aber Lebewesen ist nicht immer Ente.
Ich habe es nun über den Konstruktor gelöst, unabhängig davon ob es noch eine elegantere Lösung gibt.
Trotzdem vielen Dank für die Antwort.
Eine nach Kind gecastete Referenz wirst du auf die Basis-Instanz wohl nicht kriegen. Bau dir einen Copy-Constructor in der Kind-Klasse, der ein Basis-Objekt übernimmt, die entsprechenden Basis-Properties kopiert und die erweiterten Kind-Properties auf default-Werte setzt. Oder einen entsprechenden impliziten Cast-Operator.
Aber damit bekommst du nur eine Kopie von basis.
Hallo,
im oben verlinkten Thread zu Vererbung: bei Instanziierung einer Kindklasse alle Eigenschaften der übergebenen Basisklasse setzen wurde hierzu alles nötige gesagt. Es ist nicht notwendig das hier zu wiederholen. Daher wird dieses Thema geschlossen.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"