encapsulation java
Lär dig mer om inkapsling i Java med exempel, varför vi behöver det, associerade getter- och settermetoder:
I denna handledning kommer vi att diskutera ett annat OOP-koncept - “Encapsulation”. OOP har fyra pelare, nämligen abstraktion, inkapsling, polymorfism och arv.
Medan abstraktion används för att endast exponera relevanta detaljer för slutanvändaren, handlar inkapsling huvudsakligen om datasäkerhet. För att säkerställa datasäkerhet skyddar inkapsling datamedlemmarna från oönskad åtkomst genom att specificera åtkomstmodifierare och buntar också data i en enda enhet.
=> Kolla in den perfekta Java-träningsguiden här.
Så hur kan vi definiera inkapsling i Java?
Definition av inkapsling
'Inkapsling i Java kan definieras som en mekanism med vilken data och metoderna som arbetar med den informationen slås in för att bilda en enda enhet.'
Vad du kommer att lära dig:
Vad är inkapsling i Java
Med hjälp av inkapsling kan vi också dölja klassdata-medlemmarna (variabler) från de andra klasserna. Dessa data-medlemsvariabler kan nås indirekt med metoder i den klass där de deklareras. Metoderna i sin tur nås med objektet i den klassen.
Så vi drar slutsatsen från definitionen ovan är att vi har dolt variablerna för datamedlemmar i en klass och också har specificerat åtkomstmodifierarna så att de inte är tillgängliga för de andra klasserna.
Således är inkapsling också ett slags 'datadöljande' men senare i handledningen kommer vi att se att inkapsling inte är detsamma som datadöljande.
funktionstestning vs icke funktionell testning
Ovanstående figur representerar en klass som är en inkapslingsenhet som buntar data och metoder som fungerar på dessa data i en enda enhet.
Eftersom inkapsling huvudsakligen handlar om data kallas det alternativt ”Datainkapsling”.
Vi kan visualisera inkapsling som en medicinsk kapsel. Som vi alla vet är läkemedlet inneslutet i en medicinsk kapsel. På samma sätt är data och metoder inneslutna i en enda enhet i inkapsling.
Således fungerar inkapsling som en skyddande sköld kring data och förhindrar data från obehörig åtkomst av omvärlden. Med andra ord skyddar den känsliga data i vår applikation.
I Java finns det två steg för att implementera inkapsling. Följande är stegen:
- Använd åtkomstmodifieraren 'privat' för att deklarera klassmedlemsvariablerna.
- För att komma åt dessa privata medlemsvariabler och ändra deras värden måste vi tillhandahålla de offentliga getter- och settermetoderna.
Låt oss nu implementera exemplet på inkapsling i Java.
Exempel på Java-inkapsling
//Student_Id and name bundled in a unit 'Student' => encapsulation class Student { private int Student_Id; private String name; //getters, setters for Student_Id and name fields. public int getId() { return Student_Id; } public void setId(int s_id) { this.Student_Id = s_id; } public String getname() { return name; } public void setname(String s_name) { this.name = s_name; } } class Main{ public static void main(String() args) { //create an object of Student class Student s=new Student(); //set fields values using setter methods s.setId (27); s.setname('Tom Lee'); //print values using getter methods System.out.println('Student Data:' + '
Student ID:' + s.getId() + ' Student Name:' + s.getname()); } }
Produktion:
I ovanstående program förklarar vi en klass som är inkapslingsenheten. Denna klass Student har buntat data (Student_Id och namn) och metoderna för att läsa och ställa in värden för dessa medlemmar i en enda enhet.
Notera åtkomstmodifierarna som är associerade med medlemsfälten. Båda medlemsfälten är privata så att de inte är tillgängliga utanför studentklassen.
Vi tillhandahåller getters (getId och getname) för att läsa värdena för dessa fält och settermetoder (setId och setname) för att ställa in värden för dessa metoder. Detta är den enda åtkomst de har och som också bör göras med hjälp av studentklassobjektet.
Getter och settermetoder
För att implementera inkapsling i Java gör vi data-medlemsvariablerna i klassen privata. Nu är dessa privata variabler inte tillgängliga för något utanför klassen inklusive klassobjektet.
Detta betyder att om vi har en klass ABC enligt följande.
klass ABC {
privat intag;
}
Låt oss skapa ett objekt av klass ABC enligt följande:
ABC abc = ny ABC ();
abc.age = 21; // kompileringsfel
Så i ovanstående kod kommer åtkomst till den privata variabeln med klassobjektet att resultera i ett kompileringsfel.
För att komma åt de privata variablerna och läsa deras värden och ställa in några nya värden i dem behöver vi något sätt att göra detta. Java ger således ett sätt att komma åt privata variabler med hjälp av getter- och settermetoder.
verktyg för kontinuerlig distribution i devops
Getter och Setters är offentliga metoder som vi kan använda för att skapa, modifiera, ta bort eller helt enkelt visa värdena på de privata variablerna.
Nedanstående program är ett exempel på Getter och Setter metoder.
//Account class - private data members bundled with getters and setters class Account { //private data members private long acc_no; private String name,email; private float amount; //public getter and setter methods for each data member public long getAcc_no() { return acc_no; } public void setAcc_no(long acc_no) { this.acc_no = acc_no; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public float getAmount() { return amount; } public void setAmount(float amount) { this.amount = amount; } } public class Main { public static void main(String() args) { //create instance of Account class Account myAcc=new Account(); //set values for data members through setter methods myAcc.setAcc_no(775492842L); myAcc.setName('SoftwareTestingHelp.com'); myAcc.setEmail('sth_account@sth.com'); myAcc.setAmount(25000f); //read data member values through getter methods System.out.println('Account No:' + myAcc.getAcc_no()+' '+'Account Name:' + myAcc.getName()+'
'+'Account holder email:' + myAcc.getEmail()+'
' + 'Amount in Account:' + myAcc.getAmount()); } }
Produktion:
Ovanstående program har ett klasskonto och det har fyra privata variabler relaterade till kontot. Eftersom alla datamedlemmar är privata har vi tillhandahållit getter- och settermetoderna för var och en av dessa variabler.
hur man implementerar en kö i java
I huvudmetoden läser och ställer vi in värden för dessa privata variabler med hjälp av de offentliga getter- och settermetoderna som nås genom objektet för klasskontot.
Data gömmer sig i Java
Ofta använder vi inkapsling och datadömning omväxlande. Men båda är inte desamma. Java-inkapsling behandlar gruppering av relaterade data i en enda enhet för att säkerställa bättre hantering och säkerhet för data.
Data som döljer å andra sidan begränsar åtkomst till datamedlemmen genom att dölja implementeringsdetaljerna. Även om inkapsling inte exakt döljer data, ger det oss sättet att dölja data. Datadöljning uppnås med hjälp av åtkomstmodifierare.
Java tillhandahåller fyra åtkomstmodifierare.
- offentlig: Tillgänglig för alla.
- privat: Endast tillgängligt inom klassen.
- skyddade: Tillgänglig för det innehållande paketet och underklasserna.
- standard: Tillgänglig inom paketet.
Inkapsling buntar data i en enda enhet, så på ett sätt döljer den data. Det gör också uppgifterna privata och därmed oåtkomliga för omvärlden. För att göra data privata använder vi åtkomstmodifieraren privat, vilket är ett datadöljande koncept.
Samtidigt tillhandahålls endast relevanta detaljer till slutanvändaren utan att avslöja implementeringsdetaljerna som är en definition av abstraktion. Således kan vi se inkapsling som en kombination av abstraktion såväl som datadöljande.
Varför behöver vi kapsling?
Det finns olika anledningar till varför inkapsling är viktigt i Java:
- Inkapsling tillåter oss att ändra koden eller en del av koden utan att behöva ändra några andra funktioner eller kod.
- Inkapsling styr hur vi får åtkomst till data.
- Vi kan ändra koden baserat på kraven med inkapsling.
- Inkapsling gör våra applikationer enklare.
Vanliga frågor
F # 1) Varför används inkapsling i Java?
Svar: Inkapsling i Java är mest användbart för att dölja data. Eller med andra ord, besluta om åtkomst till data om vem som kan komma åt den och vem som inte kan.
F # 2) Vad är inkapsling i OOP?
Svar: Inkapsling är en av de viktiga pelarna i objektorienterat programmeringsspråk och det handlar om att samla data och metoder som fungerar på dessa data i en enda enhet. Till exempel, en klass i Java är en inkapslad struktur. Inkapsling handlar också om beslut om tillgång till data.
F # 3) Vilken är fördelen med inkapsling i Java?
Svar: Den största fördelen med inkapsling i Java är datadöljande. Med hjälp av inkapsling kan vi låta programmeraren bestämma om åtkomst till data och metoder som fungerar på den informationen. Till exempel, om vi vill att en viss bit data ska vara oåtkomlig för alla utanför klassen, så gör vi den informationen privat.
F # 4) Vad är inkapslingsprocessen?
Svar: Inkapsling är en process för att plocka upp data från ett format eller ett protokoll (i nätverksuttryck) och översätta eller omformatera det till ett annat format eller protokoll så att informationen är tillgänglig över applikationerna eller nätverket och samtidigt skyddas.
F # 5) Vilket är det sista steget i datakapsling?
Svar: Det sista steget i inkapsling är att ändra användarinformationen till motsvarande data. Därefter ändras dessa data till segment som vidare omvandlas till datapaket. Datapaket placeras i en logisk ram som kan överföras fram och tillbaka i programvarumiljön
Slutsats
Detta avslutar vår handledning om inkapsling i Java. Inkapsling är en teknik för att samla ihop medlemsvariabler och metoderna som fungerar på dessa datalement i en enda enhet. En klass i Java är ett klassiskt exempel på inkapsling eftersom det slår in data och metoder i en enda enhet.
Java uppnår inkapslingsimplementering genom att göra alla datamedlemmar privata och sedan tillhandahålla getter- och settermetoder som är offentliga så att vi kan läsa värdena på de privata variablerna och ställa in nya värden för dessa variabler.
=> Besök här för den exklusiva Java-utbildningsserien.
Rekommenderad läsning
- JAVA-handledning för nybörjare: 100+ praktiska Java-videohandledning
- TreeMap In Java - Handledning med Java TreeMap-exempel
- Java Double - Handledning med programmeringsexempel
- Java Float Tutorial med programmeringsexempel
- Java Reverse String: Handledning med programmeringsexempel
- Java Enum: Java-uppräkningshandledning med exempel
- Java-heltal och Java BigInteger-klass med exempel
- Java String innehåller () Metodhandledning med exempel