logo

Modifikatorji dostopa v Javi

V Javi so modifikatorji dostopa bistvena orodja, ki določajo, kako je mogoče dostopati do članov razreda, kot so metode spremenljivk, in celo do samega razreda iz drugih delov našega programa.

V Javi so na voljo 4 vrste modifikatorjev dostopa: 

Access-Modifiers-in-Java-1' title=Modifikatorji dostopa v Javi

Modifikator zasebnega dostopa

Modifikator zasebnega dostopa je določen s ključno besedo private. Metode ali podatkovni člani, ki so deklarirani kot zasebni, so dostopni samo znotraj razreda, v katerem so deklarirani.



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

Izhod
Alice 

Pojasnilo: Neposredni dostop do imena ni dovoljen zunaj osebe, ki izvaja enkapsulacijo.

Privzeti modifikator dostopa

Če za metodo razreda ali podatkovnega člana ni določen modifikator dostopa, se reče, da ima privzeti modifikator dostopa. To pomeni, da lahko do njega dostopajo samo razredi znotraj istega paketa.

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

Izhod
Tesla 

Pojasnilo: Do članov s privzetim dostopom ni mogoče dostopati iz razredov v drugem paketu.

Geeks.java: Privzeti razred v istem paketu

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

GeeksNew.java: Privzeti razred iz drugega paketa (za 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();   }  } 

Pojasnilo:  V tem primeru bo program prikazal napako med prevajanjem, ko poskušamo dostopati do privzetega modifikatorskega razreda iz drugega paketa.

Modifikator zaščitenega dostopa

Modifikator zaščitenega dostopa je določen s ključno besedo protected. Metode ali podatkovni člani, ki so deklarirani kot zaščiteni, so dostopni znotraj istega paketa ali podrazredov v različnih paketih.

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

Izhod
Access via subclass method: 100 0 

Pojasnilo: hitrost je dostopna prek metod podrazreda in drugih razredov v istem paketu, vendar neposreden dostop iz drugega paketa (ki ni podrazred) ne bi uspel.

Modifikator javnega dostopa

Modifikator javnega dostopa je določen s ključno besedo public. Javni člani so dostopni od koder koli v programu. Omejitev glede obsega članov javnih podatkov ni.

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

Izhod
15 

Pojasnilo: add() je globalno dostopen zaradi modifikatorja public.

Razredov ali vmesnikov na najvišji ravni ni mogoče razglasiti za zasebne, ker zasebno pomeni "viden samo znotraj razreda, ki ga obdaja".

Primerjalna tabela modifikatorjev dostopa v Javi

isti_razred' loading='lazy' title=Modifikator dostopa

Kdaj uporabiti posamezen modifikator dostopa v projektih iz resničnega sveta

  • Zasebno: Zamisel bi morala biti uporaba čim bolj restriktivnega dostopa, tako da bi bilo treba čim bolj uporabljati zasebno.
  • Privzeto (Zasebni paket): Pogosto se uporablja v pripomočkih ali pomožnih razredih v obsegu paketa.
  • Zaščiteno: Pogosto se uporablja v načrtih, ki temeljijo na dedovanju, kot so razširitve ogrodja.
  • Javno : To se uporablja za storitvene razrede končnih točk API-ja ali metode pripomočkov, ki jih delijo različni deli aplikacije.


Ustvari kviz