logo

Käytä muokkauksia Javassa

Javassa käyttöoikeusmuuntimet ovat olennaisia ​​työkaluja, jotka määrittävät kuinka luokan jäseniä, kuten muuttujia, menetelmiä ja jopa itse luokkaa voidaan käyttää ohjelmamme muista osista.

Javassa on saatavilla neljän tyyppisiä käyttöoikeusmuutoksia: 

Access-Modifiers-in-Java-1' title=Käytä muokkauksia Javassa

Yksityinen pääsyn muokkaaja

Yksityisen pääsyn muokkaaja määritetään avainsanalla yksityinen. Yksityisiksi ilmoitetut menetelmät tai datajäsenet ovat käytettävissä vain siinä luokassa, jossa ne on ilmoitettu.



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

Lähtö
Alice 

Selitys: Suora pääsy nimeen ei ole sallittu kapselointia pakottavan henkilön ulkopuolella.

Oletuskäytön muokkaus

Jos luokkametodille tai datajäsenelle ei ole määritetty pääsyoikeusmuuttajaa, sillä sanotaan olevan oletusarvoinen käyttöoikeusmuuttaja. Tämä tarkoittaa, että vain saman paketin luokat voivat käyttää sitä.

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

Lähtö
Tesla 

Selitys: Jäseniä, joilla on oletuskäyttöoikeus, ei voi käyttää eri paketin luokista.

Geeks.java: Oletusluokka samassa paketissa

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

GeeksNew.java: Oletusluokka eri paketista (kontrastia varten)

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

Selitys:  Tässä esimerkissä ohjelma näyttää käännösaikavirheen, kun yritämme päästä oletusmuutosluokkaan eri paketista.

Suojatun pääsyn muokkaaja

Suojatun pääsyn muokkaaja määritetään avainsanalla suojattu. Suojatuiksi julistetut menetelmät tai datajäsenet ovat käytettävissä samassa paketissa tai alaluokissa eri paketeissa.

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

Lähtö
Access via subclass method: 100 0 

Selitys: nopeus on käytettävissä alaluokkamenetelmien ja muiden luokkien kautta samassa paketissa, mutta suora pääsy eri paketista (ei-alaluokka) epäonnistuisi.

Julkisen käytön muokkaus

Julkisen pääsyn muokkaaja määritetään avainsanalla public. Julkiset jäsenet ovat tavoitettavissa kaikkialta ohjelmassa. Julkisten tietojen jäsenmäärää ei ole rajoitettu.

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

Lähtö
15 

Selitys: add() on maailmanlaajuisesti saatavilla julkisen muokkaimen ansiosta.

Huipputason luokkia tai liitäntöjä ei voida ilmoittaa yksityisiksi, koska yksityinen tarkoittaa "näkyy vain sulkevassa luokassa".

Java-käyttöoikeusmuutosten vertailutaulukko

sama_luokka' loading='lazy' title=Access-Modifier

Milloin kutakin pääsyn muokkaajaa tulee käyttää tosielämän projekteissa

  • Yksityinen: Ideana tulisi käyttää mahdollisimman rajoittavaa pääsyä, joten yksityistä tulisi käyttää mahdollisimman paljon.
  • Oletus (Paketti-yksityinen): Käytetään usein pakettikäyttöisissä apuohjelmissa tai apuohjelmissa.
  • Suojattu: Käytetään yleisesti perintöpohjaisissa malleissa, kuten kehyslaajennuksissa.
  • Julkinen : Tätä käytetään API-päätepisteiden palveluluokissa tai apumenetelmissä, jotka jaetaan sovelluksen eri osissa.


Luo tietokilpailu