Die Methoden, auf die die Propertys zugreifen (hier setLaenge, setBreite und GetFlaecheninhalt) lassen sich nicht in private oder protect verstecken.
Natürlich lassen sie sich das. Woran genau soll es scheitern?
Sollte man also immer "destructor ....Destroy" einsetzen?
Im Gegensatz zu anderen Sprachen hat der Destruktor in Delphi einen Namen. Man kann ihn nennen wie man will, sollte es aber wirklich nicht tun. Alle (bis auf dieses Tutorial) nennen ihn "destroy".
Der Grund weshalb man davon nicht abweichen sollte deckt sich mit deiner nächsten Frage
Warum "override " was überschreibe ich da?
Jede Klasse die du in Delphi definierst leitet sich implizit von der Ur-Klasse
TObject
ab. TObject hat einen Destruktor mit dem Namen "Destroy". Wenn ein Objekt deiner Klasse zerstört werden soll müssen alle Destruktoren die ganze Vererbungshierarchie hinauf abgearbeitet werden bis man bei TObject ankommt.
Der Destruktor von TObject ist "virtuell". Das bedeutet dass Unterklassen (z.B. deine) das Verhalten von "Destroy" abändern können. In deinem Fall zählt es die Klassenvariable "Anzahl" eins herunter damit man sieht dass es in der Welt nun eine Fläche weniger gibt. Doch hiernach muss im Destruktor noch "inherited" aufgerufen werden damit der Destruktor von TObject aufgerufen wird. Das fehlt in deinem Tutorial ebenfalls, das ist falsch.
Schau mal zu Themen wie "Vererbung" und "Polymorphie". Liest sich vielleicht beim ersten mal etwas wild, aber eigentlich ist es ganz einfach.
Als absolute Kurzfassung, so wäre das Tutorial korrekt:
Delphi-Quellcode:
interface
type
TFläche = class // Man kann auch "TFläche = class(TObject)" schreiben
public
destructor Destroy(); override;
end;
implementation
destructor TFläche.Destroy();
begin
// Tue etwas
inherited;
end;