Accès à la classe mère Java

Olal Messages postés 7 Statut Membre -  
Olal Messages postés 7 Statut Membre -
Bonjour,

J'ai une petite question : en sachant qu'il n'est pas possible d'accéder aux variables private de la classe mère dans la classe fille, est-il possible d'accéder à ces variables par l'intermédiaire des getters/setters de la classe mère pour changer ces variables ?

PS : Je connais "Protected".

Merci d'avance pour vos réponses.
A voir également:

3 réponses

KX Messages postés 19031 Statut Modérateur 3 020
 
Il faut bien distinguer : modifier la valeur, et modifier la variable.

Les setters sont fait, par définition, pour modifier la valeur de manière cohérente, tout en empêchant un accès direct à la variable, car sinon on pourrait faire n'importe quoi.

Mais ce qu'il faut bien comprendre, c'est que quand tu es dans la classe fille, tu n'as pas à connaître la structure interne de la classe mère, tu n'as pas à savoir quelles sont les variables privées que tu dois modifier. Pour modifier l'état d'un objet tu dois agir sur ses méthodes, pas sur sa structure (sinon ce ne serait plus du Java mais du C)
1
Olal Messages postés 7 Statut Membre
 
Ok merci pour tes explications. Donc on agit bien au niveau de la valeur de la variable et non de la variable en elle-même.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Après, il y a quand même des subtilités, parce que l'on parle d'objets, de références...
En modifiant la valeur de la variable, on peut être amené à lui donner la référence d'un objet totalement différent, en particulier lorsque l'on manipule des objets immuables (les String par exemple).
Mais tout ceci est "transparent" puisque c'est encapsulé dans les getteurs/setteurs qui garantissent la cohérence des données (en tout cas, c'est leur rôle).
0
Olal Messages postés 7 Statut Membre
 
Ok merci !
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Le but de l'encapsulation est d'interdire l'accès à ces variables, et c'est pour ça que l'on construit les getter pour lire les valeurs et les setter pour les modifier, mais on ne touche pas aux variables.
0
Olal Messages postés 7 Statut Membre
 
Ok merci. Avec le setter on touche bien indirectement à la variable non ?

Donc au final il est tout à fait possible depuis la classe fille de passer par les getters ou setters de la classe mère pour modifier ses valeurs (si on a pas la possibilité d'atteindre les variables autrement (avec protected entre autres)) non ?

Merci.
0