Je me demande si cela fait une différence si une méthode est publique ou package protégée dans une classe protégée par un package protégé.
class Example {
void test() {}
}
3 Réponses :
Si Exemple CODE> implémentée une interface d'une sorte que vous devez les rendre publics, car vous ne pouvez pas réduire l'accès dans ce cas. Toutes les méthodes d'interface sont, par défaut, publiques. P>
Bon point. Donc, vous feriez toujours vos méthodes "Paquet protégées" publiques lorsque la classe est déjà protégée?
Pas tout. Je ne ferais pas de constructeurs public, car c'est le point.
Comme écrit, cela ne fait rien. S'il s'agit d'une mise en œuvre de sous-classe ou d'interface, il peut s'agir d'une mise en œuvre ou d'une méthode de dépassement qui est déclarée publique ailleurs. P>
En fait, cela fait une différence. Voir la réponse de @ noob-non blindé.
Si nous sous-classes exemple: p> Exemple code> à un Classe publique code>, puis le code en dehors de l'emballage peut accéder à test () code> méthode à l'aide de l'instance de sous-classe s'il est publique code>.
Peux-tu me donner un exemple? Je ne peux pas te suivre.
J'ai essayé de construire un exemple en utilisant la réflexion. Mais je reçois l'exception 'java.lang.illegalAccessException: la classe autre.Auch ne peut pas accéder à un membre de l'exemple de classe.Example avec des modificateurs "public"'. Il semble donc que la protection de l'emballage de la classe protège également ses méthodes publiques.
Bon exemple, merci. Cela fait donc une différence si le membre est protégé ou public!
C'est une bonne question, je sais en C ++ il y a une combinaison de publics protégée + qui ne fait aucun effet dans l'héritage, je suppose que cela a eu effet pour les classes dans le même paquet.