Question

    

Cette question a déjà une réponse ici:

         

Légèrement lié à ma autre question : quelle est la différence entre les éléments suivants:

private class Joe
protected class Joe
public class Joe
class Joe

Une fois encore, la différence entre les deux derniers est ce qui m'intéresse le plus.

Était-ce utile?

La solution

Une classe publique est accessible à une classe dans n'importe quel package.

Une classe avec un accès par défaut ( class Joe ) n'est visible que par les autres classes du même package.

Les modificateurs private et protected ne peuvent être appliqués qu'aux classes internes.

Une classe privée n'est visible que par sa classe englobante et par les autres classes internes de la même classe englobante.

Une classe protégée est visible par les autres classes du même package et par les classes qui étendent la classe englobante.

Autres conseils

  • private: visible pour les classes externes uniquement
  • protected: visible uniquement pour les classes externes
  • public: visible pour toutes les autres classes
  • class: package-private, donc visible pour les classes d'un même package

Voir JLS pour plus d'informations. .

Une classe avec un accès par défaut n'a pas de modificateur le précédant dans la déclaration.

L'accès par défaut est un accès au niveau du package, car une classe avec un accès par défaut ne peut être vue que par les classes d'un même package.

Si une classe a un accès par défaut, une classe d'un autre package ne pourra pas créer une instance de cette classe, ni même déclarer une variable ou un type de retour . Le compilateur va se plaindre. Par exemple:

package humanity;
class Person {}

package family;
import humanity.Person;
class Child extends Person {}

Essayez de compiler ces 2 sources. Comme vous pouvez le constater, ils sont dans des packages différents et la compilation échouera.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top