Hallo!
Grundsätzlich sollten alle Properties (Variablen, Eigenschaften) eines Objektes privat sein. Der Zugriff auf diese von aussen sollte immer über öffentliche Methoden (z.B. getter/setter) erfolgen. Nur so hast du als Entwickler einer Klasse die volle Kontrolle über deine Properties und kannst z.B. ungültige Werte ablehnen. Ausserdem wird so die interne Struktur vor dem externen Nutzer verborgen und ermöglicht so z.B. Umstellungen, Anpassungen, Verbesserungen an der internen Struktur ohne dass sich das öffentlich sichtbare für den Nutzer dieses Objektes ändert.
Wenn ein Objekt eine öffentliche Methode hat, die beispielweise eine komplizierte Berechnung zu erledigen hat, kann diese Methode schon ziemlich gross und unübersichtlich werden. Dann können einzelne Schritte einer Berechnung in private Methoden ausgelagert werden, was die interne Wiederverwendbarkeit, die Übersichtlichkeit und damit auch die Wartbarkeit massiv erhöht.
Die Unterscheidung zwischen privaten und öffentlichen Properties und Methoden ist kein Feature, um die Sicherheit zu erhöhen, sondern die das Interface eines Objektes zu definieren.
Gruss
McPringle