Pourquoi le spécificateur d'accès protégé/privé ne peut pas être utilisé Déclaration d'interfaces?Spécificateur d'accès pour la déclaration d'interface
Répondre
Vous pouvez pouvez déclarer une classe protégée ou même privée - mais seulement dans une autre. À ce moment-là, il est soit visible pour les classes dérivées de l'externe (dans le cas de la protection) ou non (dans le cas de privé):
public class Outer
{
private static class NotVisibleToSubclassesOfOuter {}
protected static class VisibleToSubclassesOfOuter {}
}
Que signifie une classe privée? Qu'il ne peut pas être utilisé en dehors de cette classe? Pourquoi auriez-vous déjà eu une telle classe? (Comment l'exécuteriez-vous/le testeriez-vous?)
Que signifierait une classe protégée? Cela ne peut être vu que par les classes qui l'étendent. Ainsi quand vous tapez un squelette de classe (certains où hors du monde) il n'est pas visible mais quand nous disons s'étend la classe dynamiquement devient visible?
La classe protégée par paquet a du sens - Elle est visible par les classes à l'intérieur du paquet et pas vraiment pour la consommation publique.
Il existe une raison derrière la classe privée. Vous voulez avoir une classe utilitaire qui est utilisée dans votre bibliothèque, mais vous ne voulez pas la rendre publique. Mais puisque javac crée un fichier .java par classe, c'est un peu inutile. – Andrey
@Andrey a alors cette classe comme une classe privée à la classe qui l'utilise :) Pas un séparé d'une classe privée :) L'OP demandait pourquoi les classes n'ont pas le modificateur privé. Ils n'ont pas en Java car il est logique de ne pas les avoir :) –
oui, et je suis d'accord. mais je voulais mentionner que le modificateur privé de la classe est inutile juste en Java, pas lui-même. en C# il y a un modificateur privé pour la classe et c'est très significatif là-bas. – Andrey
Il n'y a pas de sens à avoir spécificateurs accès privé ou protégées pour la classe ou interface parce que ces deux ont plus de sens quand il s'agit de variables ou de méthodes pour réaliser l'encapsulation des données.
Les deux ont un sens lorsque le type en question est un type imbriqué, cependant. Voir ma réponse pour un exemple. –
Il n'existe pas de spécificateur d'accès en Java. Le terme est "modificateur d'accès".
(Donc toutes ces questions d'entrevue que vous voyez demandant quelle est la différence sont des absurdités.)
- 1. spécificateur de stockage de classe inutile dans la déclaration vide
- 2. Spécificateur de format pour « long long »
- 3. spécificateur de format pour entier court
- 4. Déclaration multiple pour la fonction
- 5. spécificateur pur sur la fonction-définition
- 6. Spécificateur de format C
- 7. spécificateur-qualificatif liste attendue avant
- 8. Le spécificateur de type est-il requis pour const?
- 9. Calculs dans la déclaration mysql pour l'évaluation
- 10. Déclaration Antlr @header pour la génération C++
- 11. C++ Déclaration avant pour la fonction virtuelle
- 12. Quel est le nom commun pour la déclaration, la définition, l'expression et la déclaration?
- 13. expression régulière pour spécificateur de type en php
- 14. Déclaration de retour Fortran
- 15. cacao spécificateur-qualifier-liste attendu avant struct
- 16. Randomisation ordre arg pour une fête pour la déclaration
- 17. déclaration de classe pour ruby
- 18. erreur: spécificateur-qualifier-liste attendue avant 'GKPeerPickerController
- 19. Étrange erreur pour la déclaration de la fonction membre
- 20. erreur C3646: 'fermeture': spécificateur override inconnue
- 21. erreur: spécificateur-qualifier-liste attendue avant 'SearchViewController'
- 22. Que signifie le spécificateur de format% * s?
- 23. erreur spécificateur-qualificatif liste attendue avant
- 24. Si déclaration pour j2me j2me
- 25. Existe-t-il une contrainte pour spécifier le spécificateur d'accès des membres d'une classe lorsque nous avons spécifié un spécificateur d'accès de la classe?
- 26. Aide pour une déclaration Sql
- 27. Justification de la différence dans le spécificateur d'accès "par défaut" pour une classe de base
- 28. droit associativité ne fonctionne pas avec la déclaration de déclaration
- 29. Xdocument n'imprime pas la déclaration
- 30. OrderByDescending à la déclaration LINQ
La même chose est également réelle pour les interfaces. – Roman
Pouvez-vous le rendre un peu plus clair pour l'interface? S'il vous plaît utiliser des exemples le cas échéant –