J'apprends Java en utilisant le livre Java: The Complete Reference. Je suis actuellement au chapitre 9 et donc juste inroduced aux paquets. Sur la page 187, il est dit "Si vous souhaitez autoriser un élément à être vu en dehors de votre package actuel, mais uniquement aux classes qui sous-classent votre classe directement, déclarez cet élément protégé". Ce que je comprends de ceci est, une sous-classe qui réside dans un paquet, dites 'B', et l'extension d'une classe qui est définie comme publique dans un autre paquet 'A', ayant un membre nommé "proc", puis disponible dans toutes les sous-classes, y compris les sous-classes définies en dehors du paquet 'A' actuel, je dois le marquer comme protégé. Maintenant, jetez un oeil à ma mise en œuvre de la sous-classe définie à l'intérieur package « B »:Impossible d'accéder aux membres protégés d'une classe à partir d'une sous-classe définie dans un package différent
package subapp;
import app.*;
public class Test extends App {
public Test() {
App app = new App();
System.out.println(app.proc); // error
}
}
Je suis sûr que tous les paquets (dans les deux fichiers de classe) sont correctement chargés, superclasse « directe » de test et son constructeur non paramétré, accessible au public, proc est marqué comme protégé et la fonction main() n'a pas de problème. Mais je reçois une exception d'exécution lors de l'exécution de subapp.Test qui dit "proc a protégé l'accès dans/superclasse chemin/.Est-ce que je reçois l'instruction livre erroné ou l'affirmation elle-même est fausse
[ici] (http://stackoverflow.com/a/33627846/276052) est un bon tableau illustrant les bases du modificateur d'accès 'protected'. – aioobe