Damit nicht direkt auf die Getter/Setter zugegriffen werden kann und man beim Instanzieren und Verwenden der Objekte gezwungen ist, über die Properties die Felder zu setzen und auszulesen.
Du weißt aber schon das beim Compilieren genau der umgekehrte Fall gemacht wird. Überall wo eine Property gesetzt wird, wird der entsprechende Setter aufgerufen. Entsprechend beim lesen.
Selbstverständlich!
Aus diesem Grund gibt es ja in Delphi die Properties, während man in Java/C++ direkt die Getter/Setter verwenden muss.
Natürlich ist es kein Beinbruch und v.a. auch kein Verlust an Funktionlität/Sicherheit, aber mindestens an Lesbarkeit ghet was verloren, wenn man die internen Felder eines Objekte nun sowohl über Property als auch Getter/Setter auslesen kann.