Private Vs. Protected bei Variablen
-
Hi, ich bin bis jetzt immer so vorgegangen, dass ich die meisten Variablen einer Klasse per default als protected deklariert habe, damit abgeleitete Klasse auch auf diese Zugreifen können. Jetzt habe ich aber irgendwo gelesen, man solle stattdessen per default variablen immer als private declarieren und wenn nötig public oder protected Setter/Getter zur Verfügung stellen. Was haltet ihr für sinnvoller?
-
Wenn die Variable nicht protected sein muss, dann macht es auch keinen Sinn, sie protected zu machen. Ich würde auch nur das protected machen, was explizit Sinn macht und nicht gefährlich ist. Wenn man eine Klasse schreibt, muss man sich schon überlegen, ob man von der ableiten können soll, und was die abgeleiteten Klassen alles anstellen können sollen.
-
Student83 schrieb:
Was haltet ihr für sinnvoller?
privatemachen. Der Grund ist die Zugangskontrolle. Über Getter/Setter hast du immer die Kontrolle darüber, wer wann wie und wo darauf zugreift. Du kannst darin Logging betreiben, Breakpoints setzen oder das interne Verhalten völlig verändern (z.B. eine Variable entfernen und zukünftig aus anderen berechnen lassen).Es gibt eigentlich nur sehr selten Gründe, eine Variable
protectedzu machen.Du solltest dir aber auch überlegen, welche Variablen eine abgeleitete Klasse überhaupt benötigt. Alle deine privaten Variablen nun mit Getter und Setter zu versehen ist auch nicht sehr sinnvoll.
Grüssli