Hallo Leute,
ich habe eine wichtige Verständnisfrage zu Verweisübergaben in Bezug auf Vererbung/Polymorphismus!!
Ich habe folgendes Codebeispiel bzw. folgende Beispielarchitektur:
//Pseudocode:
Klasse TGhost: //TGhost ist instanziierbar!
Name = String
Groesse = Byte;
Methode Spuken();
{
//BUUUH...
}
Jetzt haben wir noch 2 verschiedene Ableitungen von der TGhost und zwar: TCannibalGhost und TSlimeGhost.
TCannibalGhost kann extra noch andere Geister Essen, das sieht so aus: Methode Eat(ref TGhost andererGeist) und TSlimeGhost kann noch extra eine Schleimspur hinterlassen, via: Methode Slime()...
Mein Problem jetzt ist:
wenn TCannibalGhost JEDEN anderen Geist essen kann gibt es ja bekanntlich das Dilemma zwischen Referenzparameter und Vererbung was ja korrekterweise nicht kompiliert!
Aber was ist, wenn ich sage: Eat(ref TGhost andererGeist) und ihm auch eine Instanz von TGhost übergebe, was ja noch OK ist, aber DANN in der Methode setze ich "andererGeist" einfach auf eine Instanz von TSlimeGhost, also: "andererGeist = new TSlimeGhost(Name:'slimey', Groesse: 10);"
Das wird kompiliert, ist doch aber semantischer Unsinn, weil eine übergebene Instanz von TGhost NICHT eine Instanz von TSlimeGhost sein kann oder irre ich mich?
[/b]
Wäre über eine Aufklärung sehr erfreut!
LG
PF