access modifiers java tutorial with examples
Denna videohandledning förklarar vad som är Access Modifiers i Java och hur man använder Standard, Public, Protected och Private Access Modifiers med hjälp av exempel:
I Java har vi klasser och objekt. Dessa klasser och objekt finns i ett paket. Dessutom kan klasser ha kapslade klasser, metoder, variabler etc. Eftersom Java är ett objektorienterat programmeringsspråk måste vi följa inkapslingen där vi döljer de oönskade detaljerna.
Java tillhandahåller enheter som kallas 'Access Modifiers eller access specifiers' som hjälper oss att begränsa omfattningen eller synligheten för ett paket, klass, konstruktör, metoder, variabler eller andra datamedlemmar. Dessa åtkomstmodifierare kallas också “Siktspecifikatorer”.
Genom att använda åtkomstspecifikationerna kan en viss klassmetod eller variabel begränsas till åtkomst eller döljas från de andra klasserna.
=> Kontrollera ALLA Java-handledning här.
Frågor och svar för skrivbordsstödintervju för pdf-nivå 2
Vad du kommer att lära dig:
- Videohandledning om åtkomstmodifierare i Java
- Åtkomstmodifierare i Java
- Typer av åtkomstmodifierare i Java
- Slutsats
Videohandledning om åtkomstmodifierare i Java
Åtkomstmodifierare i Java
Åtkomstspecifikatorerna bestämmer också vilka datamedlemmar (metoder eller fält) i en klass som kan komma åt andra datamedlemmar i klasser eller paket etc. För att säkerställa inkapsling och återanvändning är dessa åtkomstspecifikatorer / modifierare en integrerad del av objektorienterad programmering.
Modifierare i Java är av två typer:
# 1) Åtkomstmodifierare
Åtkomstmodifierare i Java gör det möjligt för oss att ställa in omfattningen eller tillgängligheten eller synligheten för en datamedlem, vare sig det är ett fält, konstruktör, klass eller metod.
# 2) Icke-åtkomstmodifierare
Java tillhandahåller även icke-åtkomstspecifikatorer som används med klasser, variabler, metoder, konstruktörer etc. De icke-åtkomstspecifikatorer / modifierare definierar beteendet hos enheterna till JVM.
Några av icke-åtkomstspecifikatorer / modifierare i Java är:
- statisk
- slutlig
- abstrakt
- övergående
- flyktig
- synkroniserad
- inföding
Vi har täckt statiska, synkroniserade och flyktiga nyckelord i våra tidigare självstudier. Vi kommer att täcka de andra icke-åtkomstmodifierarna i våra framtida självstudier eftersom de ligger utanför ramen för denna handledning.
Typer av åtkomstmodifierare i Java
Java tillhandahåller fyra typer av åtkomstspecifikatorer som vi kan använda med klasser och andra enheter.
Dessa är:
# 1) Standard: När en specifik åtkomstnivå inte anges antas den vara ”standard”. Omfattningen av standardnivån ligger inom paketet.
# 2) Offentlig: Detta är den vanligaste åtkomstnivån och när den allmänna åtkomstspecifikatorn används med en enhet, är den specifika enheten tillgänglig överallt från eller utanför klassen, inom eller utanför paketet, etc.
# 3) Skyddad: Den skyddade åtkomstnivån har ett omfång som ligger inom paketet. En skyddad enhet är också tillgänglig utanför paketet genom ärvd klass eller underklass.
# 4) Privat: När en enhet är privat kan den här enheten inte nås utanför klassen. En privat enhet kan endast vara tillgänglig inom klassen.
Vi kan sammanfatta åtkomstmodifierarna i följande tabell.
Access Specifier | Inside Class | Inuti paketet | Underklass utanför paketet | Utanför paketet |
---|---|---|---|---|
Privat | Ja | Nej | Nej | Nej |
Standard | Ja | Ja | Nej | Nej |
Skyddade | Ja | Ja | Ja | Nej |
offentlig | Ja | Ja | Ja | Ja |
Därefter kommer vi att diskutera var och en av dessa åtkomstspecifikationer i detalj.
Standardåtkomstspecifikatorer
En standardåtkomstmodifierare i Java har inget specifikt nyckelord. När åtkomstmodifieraren inte anges antas den vara standard. Enheter som klasser, metoder och variabler kan ha standardåtkomst.
En standardklass är tillgänglig inuti paketet men den är inte tillgänglig utifrån paketet, dvs alla klasserna i paketet där standardklassen är definierad kan komma åt denna klass.
På samma sätt är en standardmetod eller variabel också tillgänglig i paketet där de är definierade och inte utanför paketet.
Programmet nedan visar standardåtkomstmodifieraren 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 ovanstående program har vi en klass och en metod inuti den utan någon åtkomstmodifierare. Därför har både klass- och metodvisningen standardåtkomst. Då ser vi att i metoden kan vi direkt skapa ett objekt av klassen och kalla metoden.
Public Access Modifier
En klass eller en metod eller ett datafält som anges som ”offentligt” är tillgängligt från alla klasser eller paket i Java-programmet. Den offentliga enheten är tillgänglig både i paketet och utanför paketet. I allmänhet är modifieraren för allmän tillgång en modifierare som inte begränsar enheten alls.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Produktion:
Protected Access Specifier
Den skyddade åtkomstspecifikatorn tillåter åtkomst till enheter genom underklasser av den klass där enheten deklareras. Det spelar ingen roll om klassen finns i samma paket eller ett annat paket, men så länge klassen som försöker komma åt en skyddad enhet är en underklass av den här klassen är enheten tillgänglig.
Observera att en klass och ett gränssnitt inte kan skyddas, dvs. vi kan inte tillämpa skyddade modifierare på klasser och gränssnitt.
Den skyddade åtkomstmodifieraren används vanligtvis i relationer mellan föräldrar och barn.
Nedanstående program visar användningen av Protected Access-modifieraren 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 åtkomstmodifierare
Den ”privata” åtkomstmodifieraren är den som har lägst tillgänglighetsnivå. Metoderna och fälten som deklareras som privata är inte tillgängliga utanför klassen. De är endast tillgängliga inom den klass som har dessa privata enheter som sina medlemmar.
Observera att privata enheter inte ens är synliga för underklasserna i klassen. En modifierare för privat åtkomst säkerställer inkapsling i Java.
Några punkter att notera angående modifieraren för privat åtkomst.
- Privat åtkomstmodifierare kan inte användas för klasser och gränssnitt.
- Omfattningen av privata enheter (metoder och variabler) är begränsad till den klass i vilken de deklareras.
- En klass med en privat konstruktör kan inte skapa ett objekt från klassen från någon annan plats som huvudmetoden. (Mer information om privata konstruktörer har förklarats i vår tidigare handledning).
Nedanstående Java-program använder en privat åtkomstmodifierare.
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:
Programmet ovan ger kompileringsfel när vi försöker komma åt privata datamedlemmar med hjälp av klassobjektet.
Men det finns en metod för att komma åt privata medlemsvariabler. Denna metod använder getters och setters i Java. Så vi tillhandahåller en offentlig get-metod i samma klass där privat variabel deklareras så att getter kan läsa värdet på den privata variabeln.
På samma sätt tillhandahåller vi en offentlig settermetod som låter oss ställa in ett värde för den privata variabeln.
Följande Java-program visar användningen av getter- och settermetoder för privata 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:
Ovanstående program har en klass med en privat strängvariabel. Vi tillhandahåller en offentlig getName-medlemsmetod som returnerar värdet på den privata variabeln. Vi tillhandahåller också en offentlig setName-metod i klassen som tar en sträng som argument och tilldelar den till den privata variabeln.
Eftersom båda metoderna är offentliga kan vi enkelt komma åt dem med hjälp av klassens objekt. På så sätt kan vi övervinna kompileringsfelet som dyker upp varje gång vi försöker få tillgång till klassens privata datamedlemmar.
hur man spelar .torrent-filer
Vanliga frågor
F # 1) Hur många åtkomstmodifierare finns det i Java?
Svar: Java tillhandahåller fyra modifierare, dvs. standard, offentliga, skyddade och privata.
F # 2) Vad är Access Modifiers och Non-Access Modifiers i Java?
Svar: Åtkomstmodifierare definierar synligheten eller omfattningen av en programenhet som en klass eller en metod eller en variabel eller en konstruktör. Icke-åtkomstmodifierare definierar beteendet hos en enhet. Till exempel, en synkroniserad metod eller ett block indikerar att det kan fungera i en multitrådningsmiljö, en slutlig variabel indikerar att den är konstant.
F # 3) Varför är åtkomstspecifikatorer viktiga?
Svar: Modifierare anger vilken klass som kan komma åt vilka andra klasser eller metoder eller variabler. Med hjälp av åtkomstspecifikatorer kan vi begränsa åtkomsten för olika klasser, metoder, konstruktörer och variabler och också säkerställa inkapsling och återanvändning av Java-enheter.
F # 4) Vilka modifierare används inte för klassen?
Svar: Skyddade och privata modifierare används inte för en klass.
F # 5) Vad är icke-åtkomstmodifierare?
Svar: Modifierare som definierar beteenden hos enheter som klass, metod eller variabler som de är associerade med är icke-åtkomstmodifierare. Som namnet antyder anger de inte åtkomsten. Java tillhandahåller olika icke-åtkomstmodifierare som statisk, slutlig, synkroniserad, flyktig, abstrakt, etc.
Mer om synlighetsmodifierare
Java tillhandahåller många modifierare för att komma åt variabeln, metoderna och konstruktörerna.
Det finns fyra typer av åtkomstvariabler i Java:
- Privat
- offentlig
- Standard
- Skyddade
# 1) Privat
Om en variabel deklareras som privat kan den nås inom klassen. Denna variabel är inte tillgänglig utanför klassen. Så de externa medlemmarna kan inte komma åt de privata medlemmarna.
Notera: Klasser och gränssnitt kan inte vara privata.
# 2) Allmänhet
Metoder / variabler med offentliga modifierare kan nås av alla andra klasser i projektet.
# 3) Skyddad
Om en variabel deklareras som skyddad kan den nås inom samma paketklasser och underklass för alla andra paket.
Notera: Skyddad åtkomstmodifierare kan inte användas för klass och gränssnitt.
# 4) Standardåtkomstmodifierare
Om en variabel / metod definieras utan något nyckelord för modifieringsåtkomst, kommer det att ha en standardmodifieringsåtkomst.
Åtkomstmodifierare | Synlighet |
---|---|
offentlig | Synlig för alla klasser. |
Skyddade | Synlig för klasser med i paketet och underklasserna för andra paket. |
Ingen åtkomstmodifierare (standard) | Synlig för klasserna med paketet |
privat | Synlig med i klassen. Det är inte tillgängligt utanför klassen. |
Demoklass:
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; } }
Åtkomst till medlemmarna i klassen i en annan klass:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Produktion:
dubbelt länkade listor c ++
Åtkomst till de offentliga medlemmarna:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Produktion:
Bobby
Viktiga punkter:
- Åtkomstspecifikatorer definierar klassens synlighet.
- Om inget nyckelord nämns är det standardåtkomstmodifieraren.
- Fyra modifierare i Java inkluderar offentliga, privata, skyddade och standard.
- Privata och skyddade nyckelord kan inte användas för klasser och gränssnitt.
Slutsats
I denna handledning undersökte vi Access Modifiers i Java i detalj. Java tillhandahåller fyra typer av åtkomstmodifierare eller synlighetsspecifikatorer, dvs. standard, offentlig, privat och skyddad. Standardmodifieraren har inget nyckelord associerat med det.
När en klass eller metod eller variabel inte har en åtkomstspecifikator associerad antar vi att den har standardåtkomst. Public access modifier ger åtkomst till allt, vare sig inom eller utanför klassen eller paketet. Det finns ingen begränsning för åtkomst när det gäller den offentliga modifieraren.
Specificeraren för skyddad synlighet tillåter endast åtkomst till underklasser som ärver den klass där skyddade medlemmar deklareras. Privat åtkomstmodifierare tillåter att minst tillgänglighet med privata datamedlemmar endast är tillgängliga inom klassen.
Modifierare begränsar omfattningen av datamedlemmar som klasser, konstruktörer, metoder och variabler och definierar gränsen för vilka klasser eller paket som kan komma åt dem. Access-specifikationer uppmuntrar inkapsling och återanvändbarhet i Java. Observera att klasser och gränssnitt inte kan skyddas eller privata.
=> Besök här för att lära dig Java från grunden.
Rekommenderad läsning
- Java Reflection Tutorial med exempel
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- Introduktion till Java-programmeringsspråk - Videohandledning
- Java SWING-handledning: Container, komponenter och händelsehantering
- Java String med String Buffer och String Builder Tutorial
- Java-distribution: Skapande och utförande av Java JAR-fil
- Java Virtual Machine: Hur JVM hjälper till att köra Java-applikationen
- Java Collections Framework (JCF) Tutorial