![]() |
Vererbung von Funktionen
Hallo,
ich schlage mich gerade mit der Vererbung von Prozeduren rum.. ich habe eine Vorfahren und eine Nachfahrenklasse.. Nun möchte ich folgendes erreichen. In der Vorfahrenklasse soll eine Prozedur deklariert sein, die etwas bestimmtest macht. Die Nachfahrenklasse soll eine Prozedur enthalten die ZUSÄTZLICH zu der Vorfahrenprozedur noch was macht. Ungefähr so:
Delphi-Quellcode:
Wenn jetzt folgender Aufruf kommt:
type
Tvorfahr=class public number:integer; function numbertoString(a: integer): String; end; Tnachfahr=class(vorfahr) public i:integer; function numbertoString(a: integer): String; end; function Tvorfahr.numbertoString(a: integer): String; begin globalvariable1:=globalvariable1+a; result:=Inttostr(number); end; function Tnachfahr.numberToString(a: integer): String; begin //mache erst das von Tvorfahr (mit selbem "a") inc(globalvariable2,a); resultvonTvorfahr:=resultvonTvorfahr+'.'+Inttostr(i); end;
Delphi-Quellcode:
Soll nur die zweite Prozedur aufgerufen werden (so wie das normalerweise mit "override" funktioniert") allerdings wird in der ja auf die erste Prozedur zugegriffen, sodass indirekt beide durchlaufen werden.
test:=Tnachfahr.create;
s:=test.numbertoString; Ich hab schon verscuht das ergebnis aus verschiedenen TUTs zu kriegen. Wäre nett wenn ihr mein Beispiel mal so anpassen könntet, dass es akzeptiert wird vom Compiler. Ich denke, dann bin ich auch in der Lage, das auf kompliziertere Prozeduren zu übertragen. Vielen Dank KahPee |
Re: Vererbung von Funktionen
So wie du das programmiert hast, wird TVorfahr.numbertoString gar nicht aufgerufen. Dazu müsstest du in TNachfahr.numbertoString noch ein inherited aufrufen.
|
Re: Vererbung von Funktionen
beim überschreiben auch besser noch so ... siehe OH > virtual bzw. abstact und override
Delphi-Quellcode:
Tvorfahr=class
public number:integer; function numbertoString(a: integer): String; virtual; end; Tnachfahr=class(vorfahr) public i:integer; function numbertoString(a: integer): String; override; end; function Tnachfahr.numberToString(a: integer): String; begin result := inherited; // oder result := inherited numberToString(a); inc(globalvariable2,a); resultvonTvorfahr:=resultvonTvorfahr+'.'+Inttostr(i); end; |
Re: Vererbung von Funktionen
zudem fehlt beim fehlt beim vorfahre "virtual" und beim Nachfahren "override". Am besten du schaust dir erst einmal ein Tutorial zur Vererbung an.
|
Re: Vererbung von Funktionen
Zudem kann man keine Prozeduren sondern nur Methoden vererben :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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