Inherited besagt, daß man eine Funktion/Procedur aus der Elternklasse aufrufen will.
- Beim Constructor und Destruktor muß/sollte man dieses machen, damit auch die Felder der Elternklassen initialisiert und freigegeben werden.
- Und in diesem Fall ist es doch so, daß hier gleichnamige Funktionen vorliegen (einmal das Create in deiner Klasse und dann das/die Create in den Klassenvorfahren)
und irgendwie muß man dem Compiler ja mittteilen, welche Version man aufrufen möchte ... standardmäßig wird ja immer die letzte Version (also die in deiner eigenen Klasse Deklarierte) verwendet/aufgerufen ... und mit Inherited davor dann die aus dem Vorfahren.
Wenn praktisch irgendwelche Funktionen in deiner Klasse überschrieben/verdeckt wurden, dann kannst du so die "originalen" Funktionen im Vorfahren aufrufen:
Delphi-Quellcode:
inherited Procedurname(Parameter, Parameter2, ...);
inherited Procedurname(Parameter);
inherited Procedurname;
// genauso bei Constructor und Destructor
Result := inherited Funktionsname(Parameter, Parameter2, ...);
Result := inherited Funktionsname(Parameter);
Result := inherited Funktionsname;
Wenn sich aber der Name und der Parametersatz des aufzurufenen Funktion mit der der aufrufenen Funktion gleichen, dann kann man auch "alles" weglassen und nur Inherited angeben.
Delphi-Quellcode:
inherited; // genauso bei Constructor und Destructor
Result := inherited;
Wenn also dein eigener Constructor genauso aufgebaut ist, wie einer eines Vorfahren, dann reicht ein einfaches Inherited ... also solange du nicht eigene Parameter hinzugefügt hast.