Hi,
mit
inherited kannst du auf Funktionen aus der Vorfahrklasse zugreifen. Ein kleines Beispiel dazu:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end;
tKlasse1 = class(tObject) public procedure MachWas; virtual; end;
tKlasse2 = class(tKlasse1) public procedure MachWas; override; procedure MachDasAlte; end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure tKlasse2.MachDasAlte; begin inherited MachWas; end;
procedure tKlasse2.MachWas; begin ShowMessage('Zwei'); end;
procedure tKlasse1.MachWas; begin ShowMessage('Eins'); end;
procedure TForm1.Button1Click(Sender: TObject); Var Klasse2 : tKlasse2; begin Klasse2 := tKlasse2.Create; Klasse2.MachWas; Klasse2.MachDasAlte; Klasse2.Free; end;
end. |
Interessant ist hier
MachDasAlte welche das
MachWas von
tKlasse1 und nicht von
tKlasse2 aufgerufen.
Du gibst also hinter
inherited den Namen der Funktion aus der Vohrfahrklasse an. Wenn die Methode in der Vorfahrklasse genau gleich heist und auch exakt die gleichen Parameter erwartet, kannst du den Methodennamen auch weg lassen.
critter
_________________
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)