Una classe pot controlar l'accés als seus membres (métodes o atributs) per part d'altres classes.
És a dir, pot determinar quina informació és accessible i quina no ho és. Hi ha quatre nivells diferents d'accessibilitat:
- public
- protected
- default (també anomenat package)
- private
Si no s'especifica cap nivell, el membre, per defecte, té accessibilitat de paquet o default.
Nivell public. És el menys restrictiu de tots els nivells. Un membre públic és accessible des de qualsevol lloc, ja sigui des del mateix paquet que conté la classe o des d'altres on aquesta classe és visible.
Nivell protected. Un membre protected és accessible en totes les classes dins del mateix paquet i per totes les subclasses de la classe en qualsevol paquet des d'on sigui visible aquesta. És a dir, classes no heretades en altres paquets no poden accedir a membres protected.
Una subclasse en un altre paquet només pot accedir a membres protected de la superclasse a través de referències del seu propi tipus o subtipus. Veiem un exemple:
// fitxer SuperClasseA.java
public class SuperClasseA { // En el paquet packageA
protected int variableClasseA; // membre protegit
protected void metodeClasseA () { ...} // membre protegit
}
// fitxer subClasseB.java
package packageB;
import packageA.*;
public class subClasseB extends SuperClasseA { // En el paquet packageB
SuperClasseA objRefA = new SuperClasseA();
void subMetodeClasseB (subClasseB objRefB){
objRefB.metodeClasseA(); // OK
objRefB.variableClasseA = 15; // OK
objRefA.metodeClasseA(); // NO OK
objRefA.variableClasseA = 20; // NO OK
}
}
Un membre protected d'una superclasse només és accessible per una subclasse que estigui en un altre paquet, a través de l'herència.
Cap comentari:
Publica un comentari a l'entrada