Tilgang Modifikatorer i Java

Tilgang Modifikatorer i Java

I Java er tilgangsmodifikatorer essensielle verktøy som definerer hvordan medlemmene av en klasse liker variabelmetoder og til og med selve klassen kan nås fra andre deler av programmet vårt.

Det er 4 typer tilgangsmodifikatorer tilgjengelig i Java: 

Tilgangsmodifikatorer-i-Java-1Tilgang Modifikatorer i Java

Modifikator for privat tilgang

Modifikatoren for privat tilgang er spesifisert med nøkkelordet privat. Metodene eller datamedlemmene som er erklært som private er bare tilgjengelige innenfor klassen de er deklarert i.

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

Produksjon
Alice  

Forklaring: Direkte tilgang til navn er ikke tillatt utenfor Person som håndhever innkapsling.

Standard tilgangsmodifikator

Når ingen tilgangsmodifikator er spesifisert for en klassemetode eller datamedlem, sies det å ha standard tilgangsmodifikator som standard. Dette betyr at bare klasser innenfor samme pakke har tilgang 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  );      }   }   

Produksjon
Tesla  

Forklaring: Medlemmer med standardtilgang kan ikke nås fra klasser i en annen pakke.

Geeks.java: Standardklasse innenfor 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 annen pakke (for 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 eksemplet vil programmet vise kompileringstidsfeilen når vi prøver å få tilgang til en standard modifikatorklasse fra en annen pakke.

Protected Access Modifier

Modifikatoren for beskyttet tilgang er spesifisert ved å bruke nøkkelordet beskyttet. Metodene eller datamedlemmene som er erklært som beskyttede er tilgjengelige innenfor samme pakke eller underklasser i forskjellige 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  );      }   }   

Produksjon
Access via subclass method: 100 0  

Forklaring: hastighet er tilgjengelig via underklassemetoder og andre klasser i samme pakke, men direkte tilgang fra en annen pakke (ikke-underklasse) ville mislykkes.

Modifikator for offentlig tilgang

Modifikatoren for offentlig tilgang spesifiseres ved å bruke nøkkelordet offentlig. Offentlige medlemmer er tilgjengelige fra overalt i programmet. Det er ingen begrensning på omfanget av 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      }   }   

Produksjon
15  

Forklaring: add() er globalt tilgjengelig på grunn av den offentlige modifikatoren.

Toppnivåklasser eller grensesnitt kan ikke erklæres som private fordi private betyr "bare synlig innenfor den omsluttende klassen".

Sammenligningstabell over tilgangsmodifikatorer i Java

samme_klasseTilgangsmodifikator

Når skal du bruke hver tilgangsmodifikator i virkelige prosjekter

  • Privat: Ideen bør være bruk så restriktiv tilgang som mulig, så privat bør brukes så mye som mulig.
  • Misligholde (Package-Privat): Brukes ofte i pakkebaserte verktøy eller hjelpeklasser.
  • Beskyttet: Vanligvis brukt i arvebaserte design som rammeutvidelser.
  • Offentlig : Dette brukes for API-endepunkter-tjenesteklasser eller verktøymetoder som deles på tvers av forskjellige deler av en applikasjon.


Lag quiz