logo

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-1' title=Tilgang 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_klasse' loading='lazy' title=Tilgangsmodifikator

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