access modifiers java tutorial with examples
Denne videovejledning forklarer, hvad der er Access Modifiers i Java, og hvordan man bruger Standard, Public, Protected og Private Access Modifiers ved hjælp af eksempler:
I Java har vi klasser og objekter. Disse klasser og objekter er indeholdt i en pakke. Desuden kan klasser have indlejrede klasser, metoder, variabler osv. Da Java er et objektorienteret programmeringssprog, skal vi følge indkapslingen, hvor vi skjuler de uønskede detaljer.
Java leverer enheder kaldet 'Access Modifiers eller access specifiers', der hjælper os med at begrænse omfanget eller synligheden af en pakke, klasse, konstruktør, metoder, variabler eller andre datamedlemmer. Disse adgangsmodifikatorer kaldes også “Sigtbarhedsspecifikatorer”.
Ved at bruge adgangsspecifikationerne kan en bestemt klassemetode eller variabel begrænses til adgang eller skjules for de andre klasser.
=> Tjek ALLE Java-tutorials her.
hvad er en god mp3 downloader til android
Hvad du lærer:
- Videovejledning om adgangsmodifikatorer i Java
- Adgang modifikatorer i Java
- Typer af adgangsmodifikatorer i Java
- Konklusion
Videovejledning om adgangsmodifikatorer i Java
Adgang modifikatorer i Java
Adgangsspecifikatorerne bestemmer også, hvilke datamedlemmer (metoder eller felter) i en klasse, der kan fås adgang til af andre datamedlemmer i klasser eller pakker osv. For at sikre indkapsling og genanvendelighed er disse adgangsspecifikatorer / modifikatorer en integreret del af objektorienteret programmering.
Modifikatorer i Java er af to typer:
# 1) Adgangsmodifikatorer
Adgangsmodifikatorer i Java giver os mulighed for at indstille omfanget eller tilgængeligheden eller synligheden af et datamedlem, det være sig et felt, konstruktør, klasse eller metode.
# 2) Modifikatorer, der ikke er adgang
Java leverer også ikke-adgangsspecifikatorer, der bruges sammen med klasser, variabler, metoder, konstruktører osv. Ikke-adgangsspecifikatorer / modifikatorer definerer enhedernes opførsel til JVM.
Nogle af de ikke-adgangsspecifikatorer / modifikatorer i Java er:
- statisk
- endelig
- abstrakt
- forbigående
- flygtige
- synkroniseret
- hjemmehørende
Vi har dækket statiske, synkroniserede og flygtige nøgleord i vores tidligere tutorials. Vi vil dække de andre ikke-adgangsmodifikatorer i vores fremtidige tutorials, da de ligger uden for omfanget af denne tutorial.
Typer af adgangsmodifikatorer i Java
Java tilbyder fire typer adgangsspecifikatorer, som vi kan bruge sammen med klasser og andre enheder.
Disse er:
# 1) Standard: Hver gang et specifikt adgangsniveau ikke er specificeret, antages det at være 'standard'. Omfanget af standardniveauet ligger inden for pakken.
# 2) Offentlig: Dette er det mest almindelige adgangsniveau, og når offentlig adgangsspecifikator bruges med en enhed, er den pågældende enhed tilgængelig overalt inden for eller uden for klassen, inden for eller uden for pakken osv.
# 3) Beskyttet: Det beskyttede adgangsniveau har et omfang, der er inden for pakken. En beskyttet enhed er også tilgængelig uden for pakken gennem arvet klasse eller underordnet klasse.
# 4) Privat: Når en enhed er privat, kan denne enhed ikke tilgås uden for klassen. En privat enhed kan kun være tilgængelig inden for klassen.
Vi kan opsummere adgangsmodifikatorerne i følgende tabel.
Adgangsspecifikator | Inde i klasse | Indvendig pakke | Udenfor pakkeunderklasse | Udenfor pakke |
---|---|---|---|---|
Privat | Ja | Ingen | Ingen | Ingen |
Standard | Ja | Ja | Ingen | Ingen |
Beskyttet | Ja | Ja | Ja | Ingen |
Offentlig | Ja | Ja | Ja | Ja |
Dernæst vil vi diskutere hver af disse adgangsspecifikatorer detaljeret.
Standardadgangsspecifikatorer
En standardadgangsmodifikator i Java har intet specifikt nøgleord. Når adgangsmodifikatoren ikke er specificeret, antages det at være standard. Enheder som klasser, metoder og variabler kan have en standardadgang.
En standardklasse er tilgængelig inde i pakken, men den er ikke tilgængelig uden for pakken, dvs. alle klasser inde i pakken, hvor standardklassen er defineret, kan få adgang til denne klasse.
Tilsvarende er en standardmetode eller variabel også tilgængelig inde i pakken, hvori de er defineret, og ikke uden for pakken.
Nedenstående program demonstrerer Standard Access Modifier i Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Produktion:
I ovenstående program har vi en klasse og en metode inde i den uden adgangsmodifikator. Derfor har både klasse- og metodedisplay standardadgang. Så ser vi, at i metoden kan vi direkte oprette et objekt i klassen og kalde metoden.
Modifikator for offentlig adgang
En klasse eller en metode eller et datafelt, der er specificeret som 'offentlig', er tilgængelig fra enhver klasse eller pakke i Java-programmet. Den offentlige enhed er tilgængelig både i pakken og uden for pakken. Generelt er offentlig adgangsmodifikator en modifikator, der slet ikke begrænser enheden.
hvad er den bedste mp3 downloader app til android
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Produktion:
Beskyttet adgangsspecifikator
Den beskyttede adgangsspecifikator tillader adgang til enheder gennem underklasser af den klasse, i hvilken enheden erklæres. Det betyder ikke noget, om klassen er i samme pakke eller anden pakke, men så længe klassen, der forsøger at få adgang til en beskyttet enhed, er en underklasse af denne klasse, er enheden tilgængelig.
Bemærk, at en klasse og en grænseflade ikke kan beskyttes, dvs. vi kan ikke anvende beskyttede modifikatorer til klasser og grænseflader.
Den beskyttede adgangsmodifikator bruges normalt i forhold mellem forældre og børn.
Nedenstående program viser brugen af Protected Access-modifikatoren i Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Produktion:
Privat adgangsmodifikator
Den 'private' adgangsmodifikator er den, der har det laveste tilgængelighedsniveau. Metoderne og felterne, der erklæres private, er ikke tilgængelige uden for klassen. De er kun tilgængelige inden for den klasse, der har disse private enheder som sine medlemmer.
Bemærk, at de private enheder ikke engang er synlige for underklasserne i klassen. En privat adgangsmodifikator sikrer indkapsling i Java.
Nogle punkter, der skal bemærkes vedrørende privat adgangsmodifikator.
- Privat adgangsmodifikator kan ikke bruges til klasser og grænseflader.
- Omfanget af private enheder (metoder og variabler) er begrænset til den klasse, hvori de erklæres.
- En klasse med en privat konstruktør kan ikke oprette et objekt fra klassen fra noget andet sted som hovedmetoden. (Flere detaljer om private konstruktører er blevet forklaret i vores tidligere tutorial).
Nedenstående Java-program bruger en privat adgangsmodifikator.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Produktion:
Ovenstående program giver kompileringsfejl, da vi prøver at få adgang til private datamedlemmer ved hjælp af klasseobjektet.
Men der er en metode til at få adgang til private medlemsvariabler. Denne metode bruger getters og settere i Java. Så vi leverer en offentlig get-metode i samme klasse, hvor privat variabel erklæres, så getter kan læse værdien af den private variabel.
På samme måde leverer vi en offentlig setter-metode, der giver os mulighed for at indstille en værdi for den private variabel.
Følgende Java-program demonstrerer brugen af getter- og settermetoder til private variabler i Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Produktion:
Ovenstående program har en klasse med en privat strengvariabel. Vi leverer en offentlig getName-medlemsmetode, der returnerer værdien af den private variabel. Vi leverer også en offentlig setName-metode i klassen, der tager en streng som et argument og tildeler den til den private variabel.
Da begge metoder er offentlige, kan vi let få adgang til dem ved hjælp af klassens objekt. På denne måde kan vi overvinde den kompileringsfejl, der dukker op hver gang, når vi prøver at få adgang til klassens private data-medlemmer.
Ofte stillede spørgsmål
Q # 1) Hvor mange adgangsmodifikatorer er der i Java?
Svar: Java leverer fire modifikatorer, dvs. standard, offentlig, beskyttet og privat.
Q # 2) Hvad er adgangsmodifikatorer og ikke-adgangsmodifikatorer i Java?
Svar: Adgangsmodifikatorer definerer synligheden eller omfanget af en programenhed som en klasse eller en metode eller en variabel eller en konstruktør. Modifikatorer, der ikke er adgang, definerer en enheds adfærd. For eksempel, en synkroniseret metode eller blok angiver, at den kan fungere i et multithreading-miljø, viser en endelig variabel, at den er konstant.
Spørgsmål nr. 3) Hvorfor er adgangsspecifikatorer vigtige?
Svar: Modifikatorer angiver, hvilken klasse der kan få adgang til hvilke andre klasser eller metoder eller variabler. Ved hjælp af adgangsspecifikatorer kan vi begrænse adgangen til forskellige klasser, metoder, konstruktører og variabler og også sikre indkapsling og genanvendelighed af Java-enheder.
sql server interview spørgsmål og svar til erfarne med eksempler
Q # 4) Hvilke modifikatorer bruges ikke til klassen?
Svar: Beskyttede og private modifikatorer bruges ikke til en klasse.
Spørgsmål nr. 5) Hvad er ikke-adgangsmodifikatorer?
Svar: Modifikatorer, der definerer adfærd for enheder som klasse, metode eller variabler, som de er tilknyttet, er ikke-adgangsmodifikatorer. Som navnet antyder, angiver de ikke adgangen. Java giver forskellige ikke-adgangsmodifikatorer som statisk, endelig, synkroniseret, flygtig, abstrakt osv.
Mere om synlighedsmodifikatorer
Java giver mange modifikatorer for at få adgang til variablen, metoderne og konstruktørerne.
Der er 4 typer adgangsvariabler i Java:
- Privat
- Offentlig
- Standard
- Beskyttet
# 1) Privat
Hvis en variabel erklæres som privat, kan den tilgås inden for klassen. Denne variabel vil ikke være tilgængelig uden for klassen. Så de eksterne medlemmer kan ikke få adgang til de private medlemmer.
Bemærk: Klasser og grænseflader kan ikke være private.
# 2) Offentlig
Metoder / variabler med offentlige modifikatorer kan tilgås af alle de andre klasser i projektet.
# 3) Beskyttet
Hvis en variabel erklæres beskyttet, kan den tilgås inden for de samme pakkeklasser og underklasse som andre pakker.
Bemærk: Beskyttet adgangsmodifikator kan ikke bruges til klasse og grænseflader.
# 4) Standardadgangsmodifikator
Hvis en variabel / metode er defineret uden adgangsændringsnøgleord, har den en standardændringsadgang.
Adgang modifikatorer | Sigtbarhed |
---|---|
Offentlig | Synlig for alle klasser. |
Beskyttet | Synlig for klasser med i pakken og underklasser af anden pakke. |
Ingen adgangsmodifikator (standard) | Synlig for klasser med pakken |
privat | Synlig med i klassen. Det er ikke tilgængeligt uden for klassen. |
Demoklasse:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
Adgang til medlemmerne af klassen i en anden klasse:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Produktion:
Adgang til de offentlige medlemmer:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Produktion:
Bobby
Vigtige punkter:
- Adgangsspecifikatorer definerer klassens synlighed.
- Hvis der ikke er nævnt noget nøgleord, er det standardadgangsmodifikator.
- Fire modifikatorer i Java inkluderer offentlig, privat, beskyttet og standard.
- Private og beskyttede nøgleord kan ikke bruges til klasser og grænseflader.
Konklusion
I denne vejledning udforskede vi Access Modifiers i Java i detaljer. Java tilbyder fire typer adgangsmodifikatorer eller synlighedsangivere, dvs. standard, offentlig, privat og beskyttet. Standardmodifikatoren har ikke nogen nøgleord tilknyttet.
Når en klasse eller metode eller variabel ikke har en adgangsspecifikator tilknyttet, antager vi, at den har standardadgang. Offentlig adgangsmodifikator giver adgang til alt, hvad enten det er inden for eller uden for klassen eller pakken. Der er ingen begrænsning for adgang i tilfælde af den offentlige modifikator.
Specificereren for beskyttet synlighed giver kun adgang til underklasser, der arver den klasse, hvor beskyttede medlemmer erklæres. Modifikator for privat adgang tillader, at den mindste tilgængelighed med de private datamedlemmer kun er tilgængelig inden for klassen.
Modifikatorer begrænser omfanget af datamedlemmer som klasser, konstruktører, metoder og variabler og definerer grænsen for, hvilke klasser eller pakker der kan få adgang til dem. Adgangsspecifikatorer tilskynder indkapsling og genanvendelighed i Java. Bemærk, at klasser og grænseflader ikke kan beskyttes eller private.
=> Besøg her for at lære Java fra bunden.
Anbefalet læsning
- Java Reflection Tutorial med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Introduktion til Java-programmeringssprog - Videovejledning
- Java SWING Tutorial: Container, komponenter og håndtering af begivenheder
- Java String med String Buffer og String Builder Tutorial
- Java-implementering: Oprettelse og udførelse af Java JAR-fil
- Java Virtual Machine: Hvordan JVM hjælper med at køre Java-applikationer
- Java Collections Framework (JCF) vejledning