Modificadors d'accés a Java

Modificadors d'accés a Java

A Java, els modificadors d'accés són eines essencials que defineixen com els membres d'una classe agraden els mètodes de variables i fins i tot la classe mateixa es pot accedir des d'altres parts del nostre programa.

Hi ha 4 tipus de modificadors d'accés disponibles a Java: 

Modificadors dModificadors d'accés a Java

Modificador d'accés privat

El modificador d'accés privat s'especifica mitjançant la paraula clau privat. Els mètodes o membres de dades declarats com a privats només són accessibles dins de la classe en què es declaren.

Java
   class   Person     {      // private variable      private     String     name  ;      public     void     setName  (  String     name  )     {      this  .  name     =     name  ;     // accessible within class      }      public     String     getName  ()     {     return     name  ;     }   }   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      Person     p     =     new     Person  ();      p  .  setName  (  'Alice'  );      // System.out.println(p.name); // Error: 'name'      // has private access      System  .  out  .  println  (  p  .  getName  ());      }   }   

Sortida
Alice  

Explicació: L'accés directe al nom no està permès fora de la persona que fa complir l'encapsulació.

Modificador d'accés per defecte

Quan no s'especifica cap modificador d'accés per a un mètode de classe o membre de dades, es diu que té el modificador d'accés predeterminat per defecte. Això vol dir que només les classes del mateix paquet hi poden accedir.

Java
   class   Car     {      String     model  ;     // default access   }   public     class   Main     {          public     static     void     main  (  String  []     args  ){          Car     c     =     new     Car  ();      c  .  model     =     'Tesla'  ;     // accessible within the same package      System  .  out  .  println  (  c  .  model  );      }   }   

Sortida
Tesla  

Explicació: No es pot accedir als membres amb accés predeterminat des de classes d'un paquet diferent.

Geeks.java: Classe per defecte dins del mateix paquet

Java
   // default access modifier    package     p1  ;      // Class Geek is having    // Default access modifier    class   Geek      {         void     display  ()         {         System  .  out  .  println  (  'Hello World!'  );         }      }   

GeeksNew.java: Classe per defecte d'un paquet diferent (per contrast)

C++
   // package with default modifier    package     p2  ;      import     p1  .  *  ;     // importing package p1   // This class is having    // default access modifier    class     GeekNew     {         public     static     void     main  (  String     args  [])     {             // Accessing class Geek from package p1       Geek     o     =     new     Geek  ();         o  .  display  ();         }      }   

Explicació:  En aquest exemple, el programa mostrarà l'error en temps de compilació quan intentem accedir a una classe modificadora per defecte des d'un paquet diferent.

Modificador d'accés protegit

El modificador d'accés protegit s'especifica mitjançant la paraula clau protected. Els mètodes o membres de dades declarats com a protegits són accessibles dins del mateix paquet o subclasses en paquets diferents.

Java
   class   Vehicle     {      protected     int     speed  ;     // protected member   }   class   Bike     extends     Vehicle     {      void     setSpeed  (  int     s  )      {      speed     =     s  ;     // accessible in subclass      }      int     getSpeed  ()      {      return     speed  ;     // accessible in subclass      }   }   public     class   Main     {      public     static     void     main  (  String  []     args  ){          Bike     b     =     new     Bike  ();      b  .  setSpeed  (  100  );      System  .  out  .  println  (  'Access via subclass method: '      +     b  .  getSpeed  ());      Vehicle     v     =     new     Vehicle  ();      System  .  out  .  println  (  v  .  speed  );      }   }   

Sortida
Access via subclass method: 100 0  

Explicació: La velocitat és accessible mitjançant mètodes de subclasse i altres classes del mateix paquet, però l'accés directe des d'un paquet diferent (no subclasse) fallaria.

Modificador d'accés públic

El modificador d'accés públic s'especifica mitjançant la paraula clau public. Els membres públics són accessibles des de qualsevol lloc del programa. No hi ha cap restricció a l'abast dels membres de les dades públiques.

Java
   class   MathUtils     {             public     static     int     add  (  int     a       int     b  )     {      return     a     +     b  ;      }   }   public     class   Main     {          public     static     void     main  (  String  []     args  )     {          System  .  out  .  println  (  MathUtils  .  add  (  5       10  ));     // accessible anywhere      }   }   

Sortida
15  

Explicació: add() és accessible globalment a causa del modificador public.

Les classes o interfícies de primer nivell no es poden declarar com a privades perquè privat significa "només visible dins de la classe que l'adjunta".

Taula de comparació de modificadors d'accés a Java

mateixa_classeModificador d'accés

Quan utilitzar cada modificador d'accés en projectes del món real

  • Privat: La idea s'hauria d'utilitzar l'accés tan restrictiu com sigui possible, de manera que s'hauria d'utilitzar el més privat possible.
  • Per defecte (Paquet-Privat): s'utilitza sovint en utilitats d'abast de paquets o classes d'ajuda.
  • Protegit: S'utilitza habitualment en dissenys basats en l'herència com les extensions de marc.
  • Públic : s'utilitza per a les classes de servei de punts finals de l'API o els mètodes d'utilitat compartits entre diferents parts d'una aplicació.


Crea un qüestionari