


Les sous-classes de différents packages peuvent-elles accéder directement aux membres protégés d'une superclasse ?
Dec 07, 2024 pm 04:30 PMComprendre l'accès protégé en Java
En Java, le modificateur protected est destiné à permettre l'accès à certains membres au sein d'un même package et aux sous-classes dans d'autres paquets. Cependant, une idée fausse courante survient lors de l'accès à des membres protégés à partir d'une instance de la superclasse en dehors de la sous-classe.
Considérez l'exemple suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Eclipse génère une erreur sur la ligne où a. protectedInt est accédé, affirmant qu'il n'est pas visible. Cela semble contredire la définition de protected en Java : "Le modificateur protected spécifie que le membre n'est accessible que dans son propre package (comme avec package-private) et, en outre, par une sous-classe de sa classe dans un autre package."
Résoudre l'idée fausse
La clé pour comprendre ce comportement réside dans la définition de protégé, car il ne s'applique qu'aux sous-classes. Plus précisément, l'accès aux membres protégés n'est autorisé que dans le corps d'une sous-classe.
Par conséquent, le membre protégé protectedInt est accessible depuis la classe C, mais uniquement pour les instances de la classe C elle-même ou les instances des sous-classes de la classe C. . Il n'est pas accessible directement à partir des instances de la superclasse, même si elles se trouvent dans le même package.
Pour résoudre l'erreur dans la méthode go, vous devrez plutôt créer une instance de classe C. de la classe A :
1 2 3 |
|
Cela accédera correctement au membre protégé via l'instance de sous-classe.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Top 4 frameworks JavaScript en 2025: React, Angular, Vue, Svelte

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation?

Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance?

Node.js 20: Boosts de performances clés et nouvelles fonctionnalités

Iceberg: L'avenir des tables de Data Lake

Spring Boot SnakeyAml 2.0 CVE-2022-1471 Issue fixe

Comment puis-je implémenter des techniques de programmation fonctionnelle en Java?

Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux?
