AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung von Funktionen

Ein Thema von KahPee · begonnen am 17. Feb 2010 · letzter Beitrag vom 17. Feb 2010
Antwort Antwort
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

Vererbung von Funktionen

  Alt 17. Feb 2010, 16:53
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:
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;
Wenn jetzt folgender Aufruf kommt:
Delphi-Quellcode:
test:=Tnachfahr.create;
s:=test.numbertoString;
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#2

Re: Vererbung von Funktionen

  Alt 17. Feb 2010, 16:57
So wie du das programmiert hast, wird TVorfahr.numbertoString gar nicht aufgerufen. Dazu müsstest du in TNachfahr.numbertoString noch ein inherited aufrufen.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

Re: Vererbung von Funktionen

  Alt 17. Feb 2010, 16:59
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Vererbung von Funktionen

  Alt 17. Feb 2010, 17:01
zudem fehlt beim fehlt beim vorfahre "virtual" und beim Nachfahren "override". Am besten du schaust dir erst einmal ein Tutorial zur Vererbung an.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Vererbung von Funktionen

  Alt 17. Feb 2010, 17:04
Zudem kann man keine Prozeduren sondern nur Methoden vererben
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz