Ja
überladen = gleicher Methodenname, unterschiedliche Parameter
überschreiben = "ersetzen" bzw. "verdecken" der geerbten Methode
Wenn du etwas mit overload markierst, dann wird je nach Parameter immer eine Funktion aufgerufen, die genau diese Parameter erwartet.
Beim Überschreiben hättest du eher sowas :
Delphi-Quellcode:
type
TFirstClass = class(TObject)
protected
procedure sayHello;
end;
TSecondClass = class(TFirstClass)
protected
procedure sayHello; override;
end;
procedure TFirstClass.sayHello;
begin
ShowMessage('FirstClass sagt Hallo');
end;
procedure TSecondClass.sayHello;
begin
ShowMessage('SecondClass sagt Hallo');
end;
Und wenn du dann Istanzen der verschiedenen Klassen hast, siehst du den Unterschied :
Delphi-Quellcode:
var First : TFirstClass;
Second : TSecondClass;
begin
First := TFirstClass.Create;
Second := TSecondClass.Create;
First.sayHello; // Ausgabe : FirstClass sagt Hallo
Second.sayHello; // Ausgabe : SecondClass sagt Hallo
First.Free;
Second.Free;
end;
Wie du siehst, haben die Methoden beide keine Parameter, aber machen doch was unterschiedliches. In dem Zusammenhang sei auch auf inherited verwiesen. Mit diesem Schlüsselwort kannst du in einer erbenden Klasse eine Methode der Vorgängerklasse aufrufen, die du überschreibst.