Problème :
Considérons deux classes, A et C, où C étend A. Supposons A déclare une variable d'instance comme protected int protectedInt = 1. Malgré l'attente selon laquelle les membres protégés devraient être accessibles au sein des sous-classes d'autres packages, Eclipse signale l'accès à protectedInt dans la classe C comme non visible.
Réponse :
Le modificateur Java protected permet l'accès à un membre dans son propre package et par sous-classes , mais uniquement lorsque l'accès se fait via une instance de la sous-classe. En effet, l'accès protégé s'étend au type de sous-classe, et non à la classe dans laquelle le membre protégé est déclaré.
Selon la spécification du langage Java (JLS), « L'accès n'est autorisé que dans le corps d'une sous-classe. S de C." Cela signifie que même si C étend A, l'accès direct à protectedInt depuis une instance de A n'est pas autorisé.
Solution :
Pour accéder aux membres protégés d'une sous-classe , le type de sous-classe doit être utilisé. Par exemple, le code suivant serait valide :
C c = new C(); System.out.println(c.protectedInt);
Dans ce cas, l'accès se fait via une instance de la sous-classe (C), le membre protégé est donc visible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!