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:
Piekļūstiet modifikatoriem JavaPrivā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ē.
Javaclass 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.
Javaclass 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.
Javaclass 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
Piekļuves pārveidotājsKad 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.