Adgang modifikatorer i Java

Adgang modifikatorer i Java

I Java er adgangsmodifikatorer essentielle værktøjer, der definerer, hvordan medlemmer af en klasse kan lide variable metoder og endda selve klassen kan tilgås fra andre dele af vores program.

Der er 4 typer adgangsmodifikatorer tilgængelige i Java: 

Adgangsmodifikatorer-i-Java-1Adgang modifikatorer i Java

Modifikator for privat adgang

Den private adgangsmodifikator er angivet ved hjælp af nøgleordet privat. De metoder eller datamedlemmer, der er erklæret som private, er kun tilgængelige inden for den klasse, hvori de er erklæret.

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  ());      }   }   

Produktion
Alice  

Forklaring: Direkte adgang til navn er ikke tilladt uden for Person, der håndhæver indkapsling.

Standardadgangsmodifikator

Når der ikke er angivet nogen adgangsmodifikator for en klassemetode eller et datamedlem, siges det at have standardadgangsmodifikatoren som standard. Det betyder, at kun klasser inden for den samme pakke kan få adgang til den.

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  );      }   }   

Produktion
Tesla  

Forklaring: Medlemmer med standardadgang kan ikke tilgås fra klasser i en anden pakke.

Geeks.java: Standardklasse inden for samme pakke

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

GeeksNew.java: Standardklasse fra en anden pakke (til kontrast)

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  ();         }      }   

Forklaring:  I dette eksempel vil programmet vise kompileringstidsfejlen, når vi forsøger at få adgang til en standardmodifikatorklasse fra en anden pakke.

Beskyttet adgangsmodifikator

Modifikatoren for beskyttet adgang er angivet ved hjælp af nøgleordet beskyttet. De metoder eller datamedlemmer, der er erklæret som beskyttede, er tilgængelige inden for den samme pakke eller underklasser i forskellige pakker.

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  );      }   }   

Produktion
Access via subclass method: 100 0  

Forklaring: hastighed er tilgængelig via underklassemetoder og andre klasser i den samme pakke, men direkte adgang fra en anden pakke (ikke-underklasse) ville mislykkes.

Offentlig adgangsmodifikator

Offentlig adgangsmodifikator er angivet ved hjælp af nøgleordet offentlig. Offentlige medlemmer er tilgængelige fra alle steder i programmet. Der er ingen begrænsning på omfanget af offentlige datamedlemmer.

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      }   }   

Produktion
15  

Forklaring: add() er globalt tilgængelig på grund af den offentlige modifikator.

Klasser eller grænseflader på øverste niveau kan ikke erklæres som private, fordi private betyder 'kun synlige inden for den omsluttende klasse'.

Sammenligningstabel over adgangsmodifikatorer i Java

samme_klasseAdgangsmodifikator

Hvornår skal du bruge hver adgangsmodifikator i real-World-projekter

  • Privat: Idéen bør være at bruge så restriktiv adgang som muligt, så privat bør bruges så meget som muligt.
  • Misligholdelse (Package-Privat): Bruges ofte i pakkeomfattede hjælpeprogrammer eller hjælperklasser.
  • Beskyttet: Almindeligvis brugt i arv-baserede designs som rammeudvidelser.
  • Offentlig : Dette bruges til API-endepunkters serviceklasser eller hjælpemetoder, der deles på tværs af forskellige dele af en applikation.


Opret quiz