Laden...

Basisklasse in abgeleitete Klasse konvertieren

Erstellt von TWolf vor 12 Jahren Letzter Beitrag vor 12 Jahren 9.090 Views
Thema geschlossen
T
TWolf Themenstarter:in
13 Beiträge seit 2008
vor 12 Jahren
Basisklasse in abgeleitete Klasse konvertieren

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?

M
402 Beiträge seit 2005
vor 12 Jahren

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...

771 Beiträge seit 2009
vor 12 Jahren
T
TWolf Themenstarter:in
13 Beiträge seit 2008
vor 12 Jahren

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?

M
402 Beiträge seit 2005
vor 12 Jahren

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...

T
TWolf Themenstarter:in
13 Beiträge seit 2008
vor 12 Jahren

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.

925 Beiträge seit 2004
vor 12 Jahren

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.

6.911 Beiträge seit 2009
vor 12 Jahren

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!"

Thema geschlossen