geschützte Daten in abstrakter Klasse

ei meiner Frage geht es speziell um Java, abstrakte Klassen und die Verwendung geschützter Daten. Mir wurde gesagt, dass alle Daten privat sein und nur geschützte Getter / Setter verwendet werden sollten.

ch verstehe, dass wir Daten vor direkter Manipulation durch zufällige Benutzer der Klasse schützen möchten und dass Mitglieder öffentlicher Daten im Allgemeinen eine fragwürdige Praxis sind. Ich habe mir "Java protected fields vs public getters" angeschaut Java geschützte Felder vs öffentliche Getter), aber ich bin immer noch skeptisch, dass:

protected int i;  

ist in einer abstrakten Klasse schlimmer als:

private int i;  
protected int geti();  
protected void seti(int j); 

Ich sehe gerade nicht die Kehrseite, wenn die abstrakte Klasse genau dazu da ist, den Kinderklassen eine übergeordnete / gemeinsame Einrichtung zu bieten, und der geschützte Bereich soll den Zugriff auf Kinder ermöglichen und gleichzeitig die Daten vor Gelegenheitsbenutzern schützen. Ich stelle in der oben genannten Frage fest, dass sich die meisten Antworten auf die Frage zu beziehen scheinen, warum Daten im Allgemeinen eher privat als öffentlich sein sollten. Ich versuche, meine Frage speziell auf Daten zu konzentrieren, die in einem abstrakten Elternteil vorhanden sind, das für die Kinder bestimmt ist. Die einzige vernünftige Bemerkung, die ich bisher gehört habe, ist, dass die Verwendung der durch Eltern geschützten Daten (z. B. int i oben) Sie mit Code in der Kindklasse belässt, der auf eine Variable verweist, die in der Kindklasse nicht deklariert ist. Weniger überzeugend ist das Argument (sieheCommon protected data member in der Basisklasse?) dass Sie den Zugang eines Tages ändern möchten, und jetzt müssen Sie Ihre Schnittstelle ehren. Dies ist eine abstrakte Klasse, die zu 100% erweitert werden soll.

Vielen Dank! Spezifische Titel- / Seitennummern-Verweise auf Bücher sind weitaus hilfreicher als Verweise auf "..jeden grundlegenden Java-Programmiertext ..."

========================================= 10-13-2010
Dies war ebenso eine Frage zu abstrakten Klassen wie zu geschützten Daten. Ich finde es enttäuschend, dass sich der Fokus in den Antworten auf die Frage, ob das Verbergen von Daten in OOP eine gute Sache ist, verschoben zu haben scheint (Antwort: Ja). Hier geht es um die Art der abstrakten Klasse und darum, wie sie sich von einer normalen nicht abschließenden Klasse unterscheidet und welche möglichen Vorteile es für die Festlegung der Namen und Typen von Datenelementen im abstrakten übergeordneten Element gibt, die von verwendet werden sollen die Kinderklassen. Ich denke, hier besteht die Möglichkeit, dass Innovation und mehr Kontrolle vom abstrakten Elternteil auf die implementierenden Kinderklassen ausgedehnt werden. Ich befürchte, dass allgemeine Prinzipien, wie die Vorteile des Versteckens von Daten, zum Dogma werden und Innovationen und die Entwicklung neuer Muster und Ideen behindern könne

ielen Dank an alle, die dazu beigetragen habe

Antworten auf die Frage(10)

Ihre Antwort auf die Frage