logo

Vieša vs privati ​​Java

Java, viešas ir privatus yra raktinius žodžius kurie žinomi kaip an prieigos modifikatorius arba specifikatorius . Tai apriboja klasės apimtį arba prieinamumą, konstruktorius , kintamieji , metodas s, ir duomenų nariai. Tai priklauso nuo to, kuriai ji taikoma. „Java“ suteikia keturių tipų prieigos modifikatorius: viešas, privatus, saugomas , ir numatytas . Tačiau šiame skyriuje aptarsime tik du viešuosius ir privačius, taip pat aptarsime skirtumas tarp viešosios ir privačios prieigos specifikatoriaus su pavyzdžiu.

Prieigos modifikatoriai valdo, ar kitos klasės gali naudoti tam tikrą lauką arba iškviesti tam tikrą metodą. Java suteikia du prieigos kontrolės lygius:

    Auksciausias lygis:Šiame lygyje galime naudoti tik a viešas Narių lygis:Šiame lygyje galime naudoti viešas, privatus, saugomas ir paketas-privatus (jei nenaudojame jokio aiškaus modifikatoriaus, vadinamas paketo privačiu).

Šioje lentelėje parodytas prieigos lygis nariams, kurį leidžia viešieji ir privatūs modifikatoriai.

java eilutės funkcijos
Vieša vs privati ​​Java

Vis dar neaiškūs skirtumai tarp šių dviejų? Leiskite parodyti jums paveikslėlį, kuriame parodyta, kaip prieigos lygiai veikia matomumą. Toliau pateiktame paveikslėlyje parodytos dvi pakuotės p1 ir p2 . Kiekvienoje pakuotėje yra dvi klasės Demo1 ir Demo2 (pakuotėje p1) ir Demo3 ir Demo4 (pakuotėje p2).

Vieša vs privati ​​Java

Toliau pateiktoje lentelėje aprašomas klasių matomumas, jei klases padarome viešas ir privačias po vieną. Aukščiau pateiktame paveikslėlyje Demo1 yra vienintelė klasė, kuri matoma kiekvienam prieigos modifikatoriui.

Vieša vs privati ​​Java

Aptarkime tai išsamiai.

Viešosios prieigos modifikatorius

Jį galima nurodyti naudojant viešas raktažodį. Jo taikymo sritis arba prieinamumas yra plačiausias tarp kitų prieigos specifikatorių. Kintamuosius, klases ir metodus, paskelbtus kaip viešus, galima pasiekti iš bet kurios programos vietos. Ji nenustato viešųjų duomenų narių apimties apribojimų. Jei metodus ir klases paskelbsime viešaisiais, jie taip pat pažeidžia principą inkapsuliavimas . Taip pat galime naudoti su aukščiausio lygio klasėmis.

Naudokime privačios prieigos specifikaciją a Java programa geresniam supratimui.

Demo1.java

rūšiavimo algoritmai sujungia rūšiavimą
 package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } } 

Demo2.java

 package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } } 

Išvestis

centos vs redhat
 Javatpoint 

Privačios prieigos modifikatorius

Tai yra viešojo modifikatoriaus priešingybė. Jį galima nurodyti naudojant privatus raktinis žodis, po kurio nurodomas klasės pavadinimas (taikomas tik įdėtoms klasėms) arba metodo pavadinimas arba duomenų narys. Negalime naudoti privačios prieigos specifikatoriaus su aukščiausio lygio klasėmis arba sąsajos . Kintamuosius, metodus ir klases, deklaruotus kaip privačius, galima pasiekti tik toje klasėje, kurioje jie deklaruoti, arba paveldint pirmines klases. Tai labiausiai apribota „Java“ prieigos specifikacija. Tai aukštumų inkapsuliavimo forma.

  • Mes negalime nepaisyti metodai, kurie yra paskelbti privačiais.
  • Jei naudosime privatų modifikatorių su konstruktoriumi, išvengsime jo subklasifikavimo.
  • Jis paslepia klases nuo kitų to paties klasių paketą .

Norėdami geriau suprasti, naudokite privačios prieigos specifikaciją „Java“ programoje.

Šiame pavyzdyje mes paskelbėme dvi klases: Demo1 ir Demo2. Klasėje Demo1 apibrėžėme metodą Rodyti() kaip privatus. Klasėje Demo2 yra pagrindinis() metodas, kuriame sukūrėme Demo1 klasės objektą. Po to mes bandome pasiekti privatų klasės Demo1 metodą iš klasės Demo2, tai neįmanoma. Tačiau vis tiek vykdysime programą, kad pamatytume, kokią klaidą ji rodo.

 class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } } 

Kai vykdome aukščiau pateiktą programą, rodoma ši klaida:

Vieša vs privati ​​Java

Skirtumas tarp viešosios ir privačios prieigos specifikatoriaus „Java“.

Pagrindinis skirtumas tarp viešųjų ir privačių modifikatorių yra jo matomumas. „Java“ klasifikuoja klasės narių matomumą taip:

  • Poklasiai tame pačiame pakete
  • Ne poklasiai tame pačiame pakete
  • Poklasiai skirtinguose paketuose
  • Klasės nei tame pačiame pakete, nei poklasiuose
Vieša vs privati ​​Java

Kurį turėtume naudoti?

Turėtume naudoti viešosios prieigos modifikatorių, jei norime, kad metodas ar ypatybė būtų matoma iš bet kurios vietos, kitų klasių ir objekto egzempliorių. Naudokite privačios prieigos modifikatorių, jei norite, kad metodas arba ypatybė būtų matoma tik savo klasėje. Venkite viešų laukų, išskyrus konstantas.