Modificateurs d'accès en Java

View more categories:

1- Modificateur en Java

Il y a deux types modifier dans 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 modifier

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

Le tableau ci-dessous illustre un aperçu de la façon d'utiliser les access modifier.
Modificateur d'accès Accès en classe Accès dans l'emballage Accéder à l'extérieur de l'emballage 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

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 privé, vous ne pouvez pas créer un objet de cette classe à partir de ce constructeur privé, 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 modificateur d'accès, 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 ont 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.
Remarque:
Avec l'interface, lorsque vous déclarez un champ (Field ) ou une méthode (Method ), vous devez toujours déclarer le public ou par défaut, mais Java a toujours compris 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

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

7- public access modifier

modificateur d'accès public est le plus puissant et le plus accessible de partout. Il a la plus large gamme d'accès que l'autre modificateur.

8- Méthode de substitution

Vous pouvez remplacer une méthode de superclasse par une méthode dont le nom et le paramètre sont similaires à ceux d'une superclasse . Toutefois, 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 des changements d'accession prioritaires du mode protégé au mode public. Ceci est valide.
  2. La classe de Mouse (souris) s'étend de la classe Animal et remplace la méthode move(), la portée de l'adhésion prioritaire passe du mode protégé 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.

View more categories: