Maison >Java >javaDidacticiel >Pourquoi Eclipse signale-t-il l'accès aux champs protégés comme invalide dans l'héritage Java ?
Lors de l'examen d'une hiérarchie de classes, Eclipse marque par erreur l'accès d'un champ protégé comme invalide . Cette contradiction apparente résulte d'une mauvaise compréhension de la fonctionnalité prévue du modificateur protected.
Selon la spécification du langage Java (JLS), un membre protégé est accessible dans le package de la classe déclarante et par les sous-classes de cette classe, indépendamment du package de la sous-classe. Dans ce cas, la classe A déclare le champ protégé protectedInt.
Dans l'exemple donné, la classe C étend la classe A, ce qui signifie que les instances C doivent avoir accès au champ protectedInt de A. Cependant, Eclipse signale que l'accès est interdit lors de l'utilisation d'une instance de A dans C.
La solution réside dans la compréhension que l'accès protégé est limité aux sous-classes de la classe déclarante. Par conséquent, le champ protectedInt de A n'est accessible que par les instances de C ou les sous-classes de C. Il s'agit d'une distinction cruciale qui manque à Eclipse.
Pour illustrer, l'accès à protectedInt via une instance de C fonctionnerait comme prévu :
C c = new C(); System.out.println(c.protectedInt); // Access to 'protectedInt' allowed
En fin de compte, le modificateur protected fournit un accès contrôlé aux champs et aux méthodes, leur permettant d'être hérités par les sous-classes tout en conservant l'encapsulation dans un paquet.
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!