![]() |
[OOP]: Methode (mit Parameter) überschreiben
|
Re: [OOP]: Methode (mit Parameter) überschreiben
Hallo
Zitat:
Gruß Daniel |
Re: [OOP]: Methode (mit Parameter) überschreiben
Moin!
Grundlegendes: Ich gehe davon aus, das TNewKnoten von TKnoten abgeleitet ist! - da dies vorher nicht geklärt wurde. Wenn das der Fall ist, dann einfach so:
Code:
Dabei gehe ich davon aus, das Add_Knoten keine Instanz anlegt sondern eine vorhandene oder die übergebene TNewKnoten Instanz zurück gibt. Wenn es keine Instanz von TNewKnoten ist, dann schlägt die in der As Abfrage enthaltene Is Abfrage fehl und Result wird nicht gefüllt bzw. mit NIL. Daher gibt er entweder eine eindeutige TNewKnoten Instanz zurück oder Nil bzw. einen Zufallswert.
function TListe.Add_Knoten(Knoten: TKnoten): TKnoten;
begin {...} end; function TNewListe.Add_Knoten(Knoten: TNewKnoten): TNewKnoten; begin Result := ( inherited Add_Knoten(Knoten) As TNewKnoten ); //Löst immer einen Fehler aus end; Beim Aufruf kannst du direkt die TNewKnoten Instanz angeben, weil TNewKnoten von TKnoten abgeleitet ist. MfG Muetze1 |
Re: [OOP]: Methode (mit Parameter) überschreiben
ich denke, dass diese zwei zwar gleichnamigen Methoden wie zwei verschiedene gehandhabt werden, daher wird er auch keine inherited finden können, da sich die zwei durch die Parameter unterscheiden.
|
Re: [OOP]: Methode (mit Parameter) überschreiben
Moin!
Nein, da hat er keine Probleme, da er die andere Methode findet, weil es die Basisklasse von dem TKnoten Objekt enthält. Das übergeben Objekt hat ja schon den Typ TNewKnoten, daher hat er da kein Problem. Wenn der Parameter einen niedrigeren Typ hätte (z.B. TObject), dann würde er fehlschlagen und meckern... MfG Muetze1 |
Re: [OOP]: Methode (mit Parameter) überschreiben
Danke für die Antworten! :-D
Nochmals auf meine 1. Frage zurückzukommen: Zitat:
|
Re: [OOP]: Methode (mit Parameter) überschreiben
Verstehe es doch so: Borland nimmt es nicht so genau..
|
Re: [OOP]: Methode (mit Parameter) überschreiben
Wozu gibt es dann override?
Wird dieses Überschreiben überall außer im public-Teil verwendet? :gruebel: |
Re: [OOP]: Methode (mit Parameter) überschreiben
*push* :angel:
|
Re: [OOP]: Methode (mit Parameter) überschreiben
Zitat:
Delphi-Quellcode:
type
TExample = class(TObject) public constructor Create(); constructor Create(o: TObject); override; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz