I Java, offentlig og privat er søgeord der er kendt som en adgangsmodifikator eller specificator . Det begrænser omfanget eller tilgængeligheden af en klasse, konstruktør , variabler , metode s og datamedlemmer. Det afhænger af, hvilken det anvendes. Java leverer de fire typer adgangsmodifikatorer: offentlig, privat, beskyttet , og Standard . Men i dette afsnit vil vi kun diskutere to offentlige og private, og også diskutere forskel mellem offentlig og privat adgangsspecifikation med eksempel.
Adgangsmodifikatorer styrer, om andre klasser kan bruge et bestemt felt eller påberåbe en bestemt metode. Java giver to niveauer af adgangskontrol:
Følgende tabel viser adgangsniveauet til medlemmer, der er tilladt af de offentlige og private modifikatorer.
java stakke
Stadig ikke klar over forskellene mellem de to? Lad mig vise dig en figur, der viser, hvordan adgangsniveauer påvirker synlighed. Følgende figur viser de to pakker p1 og s2 . Hver pakke indeholder to klasser Demo1 og Demo 2 (i pakke p1), og Demo3 og Demo4 (i pakke p2).
Følgende tabel beskriver klassernes synlighed, hvis vi gør klasserne offentlige og private én efter én. I ovenstående figur er Demo1 den eneste klasse, der er synlig for hver adgangsmodifikator.
Lad os diskutere det i detaljer.
Offentlig adgangsmodifikator
Det kan specificeres ved at bruge offentlig søgeord. Dens omfang eller tilgængelighed er den bredeste blandt andre adgangsspecifikationer. De variabler, klasser og metoder, der er erklæret som offentlige, kan tilgås overalt i programmet. Den pålægger ikke begrænsninger for omfanget af medlemmer af offentlige data. Hvis vi erklærer metoder og klasser som offentlige, overtræder de også princippet om indkapsling . Vi kan også bruge det med topklasserne.
Lad os bruge specifikationen for privat adgang i en Java program for bedre forståelse.
Demo1.java
java er lig
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(); } }
Produktion
Javatpoint
Modifikator for privat adgang
Det er det modsatte af den offentlige modifikator. Det kan specificeres ved at bruge privat nøgleord efterfulgt af klassenavn (kun anvendt på indlejrede klasser) eller metodenavn eller datamedlem. Vi kan ikke bruge specifikationen for privat adgang med klasserne på øverste niveau eller grænseflader . De variabler, metoder og klasser, der er erklæret som private, kan kun tilgås i den klasse, hvor de er erklæret, eller ved at nedarve de overordnede klasser. Det er den mest begrænsede adgangsspecifikation i Java. Det er højdens form for indkapsling.
- Vi kan ikke tilsidesætte de metoder, der er erklæret som private.
- Hvis vi bruger den private modifikator med konstruktøren, undgår vi, at den bliver underklassificeret.
- Det skjuler klasserne fra de andre klasser inden for samme pakke .
Lad os bruge specifikationen for privat adgang i et Java-program for bedre forståelse.
I det følgende eksempel har vi erklæret to klasser: Demo1 og Demo2. I klassen Demo1 har vi defineret en metode at vise() som privat. Klassen Demo2 indeholder main() metoden, hvor vi har oprettet et objekt af klassen Demo1. Derefter forsøger vi at få adgang til den private metode for klassen Demo1 fra klassen Demo2, det er ikke muligt. Men alligevel vil vi køre programmet for at se, hvilken fejl det viser.
hiba bukhari
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(); } }
Når vi udfører ovenstående program, viser det følgende fejl:
Forskellen mellem offentlig og privat adgangsspecifikation i Java
Den største forskel mellem offentlige og private modifikatorer er dens synlighed. Java kategoriserer synligheden for klassemedlemmer som følger:
- Underklasser i samme pakke
- Ikke-underklasser i samme pakke
- Underklasser i forskellige pakker
- Klasser hverken i samme pakke eller underklasser
Hvilken skal vi bruge?
Vi bør bruge public access modifier, hvis vi ønsker at gøre metoden eller egenskaben synlig fra hvor som helst, andre klasser og forekomster af objektet. Brug modifikatoren for privat adgang, hvis du kun vil gøre metoden eller egenskaben synlig i dens egen klasse. Undgå offentlige felter undtagen konstanter.