Médiaforma

Java – Données membres protégées

Print Friendly

Comme nous l’avons vu dans l’article précédent, une classe dérivée ne peut accéder aux données membres privées de la classe de base. Définir ces données publiques est contraire au concept d’encapsulation. Une solution existe néanmoins : définir les données en tant que protégées (protected). D’une manière générale, les membres protégés (données ou fonctions) d’une classe sont accessibles aux classes dérivées.

Le listing de la classe Cylindre doit donc être modifié comme suit :

public class Cylindre {
  static protected double rayon;
  static protected double hauteur;

  public Cylindre() {
    rayon = 1;
    hauteur = 1;
  };

  public Cylindre(double r, double h) {
    rayon = r;
    hauteur = h;
  };

  static public double Calcule() {
    return 3.1415 * rayon * rayon * hauteur;
  }
}

Les données membres de la classe Cylindre sont définies en tant que protégées :

static protected double rayon;
static protected double hauteur;

Les fonctions membres de la classe Cylindre sont définies publiques :

public Cylindre()
static public double Calcule()

La fonction Affecte() de la classe dérivée NouveauCylindre peut accéder aux données protégées de la classe Cylindre, car elle en est dérivée. Par contre, si une fonction non dérivée de Cylindre tentait d’accéder à ces données, cela produirait une erreur. Le concept d’encapsulation est donc bien respecté.

Vous avez aimé cet article ? Partagez-le avec vos réseaux...
 
Comments

No comments yet.

Leave a Reply