données protégées dans la classe abstraite

Ma question porte spécifiquement Java, les classes abstraites, et l'utilisation de données protégées. Je me dit que toutes les données doivent être privé, et protégé des getters/setters utilisé seul.

Maintenant, je comprends que nous voulons pour protéger les données à partir de la manipulation directe par les utilisateurs occasionnels de la classe, et que les membres de données en général sont une pratique incertaine. J'ai regardé "la Java des champs protégés vs public getters" ( Java des champs protégés vs public getters ), mais je suis encore douteux que:

protected int i;  

qui est pire, dans une classe abstraite que:

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

Je suis tout simplement pas voir le côté vers le bas lorsque la classe abstraite est là justement pour fournir aux parents/installation commune aux enfants des classes, et le champ d'application est destinée à fournir l'accès aux enfants, tout en protégeant les données d'utilisateurs occasionnels. Je note dans la question mentionnée ci-dessus, que la plupart des réponses semblent répondre à la question du pourquoi de données en général devrait être privé plutôt que public. Je suis en train de concentrer ma question spécifiquement sur les données existantes dans un résumé parent prévu pour une utilisation par les enfants. La seule raisonnable commentaire que j'ai entendu à ce jour est que l'utilisation de la parents de données protégées (par exemple, int i ci-dessus) vous laisse avec le code dans la classe enfant qui fait référence à une variable non déclarée dans la classe enfant. Moins convaincante est l'argument (voir Commun des données protégées membre dans la classe de base? ) que vous voulez modifier l'accès à certains jours, et maintenant vous avez de l'honneur de votre interface. C'est une classe abstraite, et est destiné à être étendu à 100% du temps.

Merci! Titre/page# références à des livres sont beaucoup plus utiles que les références à "..toute base de programmation Java texte..."

========================================== 10-13-2010
C'était autant une question sur les classes abstraites comme il est sujet à des données protégées. Je trouve ça décevant que l'accent semble avoir changé dans les réponses pour savoir si les données de masquage est une bonne chose en programmation orientée objet (réponse: oui). Il y a beaucoup de profondeur sur la nature de la classe abstraite, et en quoi elle diffère d'un non-classe finale, et quels avantages il peut y avoir pour la fixation des noms et des types de données-éléments dans l'abstrait parent pour l'utilisation par l'enfant des classes. Je pense qu'il y a ici la possibilité pour l'innovation et un contrôle plus étendu vers le bas à partir de l'abstrait parent à la mise en œuvre de classes enfant. Je suis inquiète de ce que les principes généraux, tels que les avantages de données-se cacher, peut devenir un dogme, et freinent l'innovation et le développement de nouvelles idées et des schémas.

Merci à tous ceux qui ont contribué.

source d'informationauteur cvsdave