devstory

Modificateurs d'accès en Java

  1. Modificateur en Java
  2. Vue d'ensemble des modificateurs d'accès
  3. private access modifier
  4. private constructor
  5. Modificateur d'accès par défaut
  6. protected access modifier
  7. public access modifier
  8. Redéfinition/ spécialisation de méthodes

1. Modificateur en Java

Il y a deux types modifier en java: access modifiers et non-access modifiers.
Les access modifiers dans java déterminent l'accessibilité (portée) d'un membre de données, d'une méthode, d'un constructeur ou d'une classe.
Il y a quatre types de java access modifiers :
  1. private
  2. (Défaut)
  3. protected
  4. public
Et il y a quelques non-access modifiers comme statique, abstraite, synchronisée, native, volatile, transitoire, etc... Dans ce document, nous apprendrons sur les access modifiers.

2. Vue d'ensemble des modificateurs d'accès

Le tableau ci-dessous vous donne un aperçu de la façon d'utiliser les access modifier.
Modificateur d'accès
Accès en classe
Accès dans package
Accéder à l'extérieur de package par sous-classe seulement
Accéder à l'extérieur du colis et non dans la sous-classe.
Privé
Y
Défaut
Y
Y
Protégé
Y
Y
Y
Public
Y
Y
Y
Y
Vous pouvez comprendre plus en détail, selon les exemples ci-dessous :

3. private access modifier

Le private access modifier est autorisé uniquement dans une classe.
Vous ne pouvez pas accéder au champ private en dehors de la classe qui définit celui-ci privé. Java notifiera une erreur au moment de la compilation de la classe.

4. private constructor

Si vous créez une classe et avez un constructeur private, vous ne pouvez pas créer un objet de cette classe à partir de ce constructeur private en dehors de cette classe. Voyons un exemple d'illustration :

5. Modificateur d'accès par défaut

Dans le cas où vous déclarez un champ, une méthode, un constructeur, classe mais vous n'indiquez pas clairement le access modifier, cela signifie qu'il sera un modificateur d'accès par défaut.
La portée d'accès du modificateur d'accès par défaut est à l'intérieur du package.
// A class with default access modifier
// (Not public).
class MyClass   {

 // A field with private access modifier.
 private int myField;

 // A field with default access modifier.
 // (not specified public, protected, private).
 String myField2;

 // A method with default access modifier.
 // (not specified public, protected, private).
 void showMe()  {

 }
}
Dans le même package, vous pouvez accéder aux membres qui contiennent par défaut des modificateurs d'accès.
Et vous ne pouvez pas accéder à des choses en dehors du package, même si elles se trouvent dans une sous-classe.
Avec l'interface, lorsque vous déclarez un champ (Field) ou une méthode (Method), vous devez toujours déclarer public ou par défaut, mais Java le considère toujours comme public.
public interface MyInterface  {

   // This is a field, you can not declare private or protected.
  public static int MY_FIELD1 = 100;

  // This is a field with default access modifier
  // But Java considering this is a public.
  static int MY_FIELD2 = 200;

  // This is a method, with default access modifier
  // But Java considering this is a public.
  void showInfo();
}

6. protected access modifier

Le protected access modifier peut accéder à l'intérieur de package ou ou à l'extérieur, mais uniquement par l'intermédiaire de l'héritage.
Le protected access modifier ne s'applique qu'au field (champ), méthode et constructeur. Il n'applique pas à la classe (classe, interface, enum, annotation).

7. public access modifier

Le public access modifier est le plus puissant et le plus accessible partout. Il possède la portée la plus large parmi les autre modifier.

8. Redéfinition/ spécialisation de méthodes

Vous pouvez redéfinir une méthode de superclasse par une méthode dont le nom et le paramètre sont similaires à ceux d'une superclasse. Pourtant, vous ne pouvez pas rendre la portée de cette méthode restrictive.
Sur l'image illustrative ci-dessus
  1. La classe Cat s'étend de la classe Animal et remplace la méthode move(); La portée de redéfinition change de mode protectedau mode public. Ceci est valide.
  2. La classe Mouse s'étend de la classe Animal et remplace la méthode move(), la portée de redéfinition change de mode protected au mode par défaut. Cela réduit la portée d'accès de la méthode d'origine, donc ce n'est pas valide.

Java Basic

Show More