logo

Piekļūstiet modifikatoriem Java

Java piekļuves modifikatori ir būtiski rīki, kas nosaka, kā klases dalībniekiem, piemēram, mainīgo metodēm, un pat pašai klasei var piekļūt no citām mūsu programmas daļām.

Java ir pieejami 4 veidu piekļuves modifikatori: 

Access-Modifiers-in-Java-1' title=Piekļūstiet modifikatoriem Java

Privātās piekļuves pārveidotājs

Privātās piekļuves pārveidotājs tiek norādīts, izmantojot atslēgvārdu privāts. Metodes vai datu dalībnieki, kas deklarēti kā privāti, ir pieejami tikai tajā klasē, kurā tie ir deklarēti.



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

Izvade
Alice 

Paskaidrojums: Tieša piekļuve vārdam nav atļauta ārpus personas, kas veic iekapsulēšanu.

Noklusējuma piekļuves pārveidotājs

Ja klases metodei vai datu dalībniekam nav norādīts piekļuves pārveidotājs, tiek uzskatīts, ka pēc noklusējuma tam ir noklusējuma piekļuves modifikators. Tas nozīmē, ka tai var piekļūt tikai klases vienā pakotnē.

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

Izvade
Tesla 

Paskaidrojums: Dalībniekiem ar noklusējuma piekļuvi nevar piekļūt no klasēm citā pakotnē.

Geeks.java: Noklusējuma klase tajā pašā pakotnē

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

GeeksNew.java: Noklusējuma klase no citas pakotnes (kontrastam)

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

Paskaidrojums:  Šajā piemērā programma parādīs kompilēšanas laika kļūdu, kad mēģināsim piekļūt noklusējuma modifikatoru klasei no citas pakotnes.

Aizsargātas piekļuves pārveidotājs

Aizsargātās piekļuves modifikators tiek norādīts, izmantojot atslēgvārdu aizsargāts. Metodes vai datu dalībnieki, kas deklarēti kā aizsargāti, ir pieejami vienā un tajā pašā pakotnē vai apakšklasēs dažādās pakotnēs.

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

Izvade
Access via subclass method: 100 0 

Paskaidrojums: ātrums ir pieejams, izmantojot apakšklases metodes un citas klases tajā pašā pakotnē, bet tieša piekļuve no citas pakotnes (kas nav apakšklase) neizdosies.

Publiskās piekļuves pārveidotājs

Publiskās piekļuves modifikators tiek norādīts, izmantojot atslēgvārdu public. Publiskie dalībnieki ir pieejami no jebkuras programmas vietas. Publisko datu dalībnieku lokam nav ierobežojumu.

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

Izvade
15 

Paskaidrojums: add() ir globāli pieejams publiskā modifikatora dēļ.

Augstākā līmeņa klases vai saskarnes nevar deklarēt kā privātas, jo privātais nozīmē “redzamas tikai aptverošajā klasē”.

Java piekļuves modifikatoru salīdzināšanas tabula

vienāda_klase' loading='lazy' title=Piekļuves pārveidotājs

Kad izmantot katru piekļuves pārveidotāju reālās pasaules projektos

  • Privāts: Idejai vajadzētu izmantot pēc iespējas ierobežotāku piekļuvi, lai pēc iespējas vairāk izmantotu privāto piekļuvi.
  • Noklusējums (Package-Private): bieži izmanto pakotnes tvēruma utilītprogrammās vai palīgu klasēs.
  • Aizsargāts: Parasti izmanto uz mantošanu balstītos dizainos, piemēram, ietvara paplašinājumos.
  • Publisks : tiek izmantots API galapunktu pakalpojumu klasēm vai utilītas metodēm, kas tiek koplietotas dažādās lietojumprogrammas daļās.


Izveidojiet viktorīnu