Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas accéder à un membre protégé dans une sous-classe Java à partir d'un autre package ?

Pourquoi ne puis-je pas accéder à un membre protégé dans une sous-classe Java à partir d'un autre package ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 04:47:12923parcourir

Why Can't I Access a Protected Member in a Java Subclass From Another Package?

Comprendre le modificateur protégé de Java

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn