Inkapsling i Java OOP med exempel

Vad är inkapsling i Java?

Inkapsling i Java är en mekanism för att packa upp variabler (data) och metoder (kod) tillsammans som en enda enhet. Det är processen att dölja informationsdetaljer och skydda data och objektets beteende. Det är ett av de fyra viktiga OOP-koncepten. Inkapslingsklassen är lätt att testa, så det är också bättre för enhetstestning.

I den här handledningen lär du dig-

  • Vad är inkapsling i Java?
  • Lär dig inkapsling med ett exempel
  • Data gömmer sig i Java
  • Getter och Setter Methods i Java
  • Abstraktion vs. inkapsling
  • Fördelar med inkapsling i Java

Klicka här om videon inte är tillgänglig

Lär dig inkapsling med ett exempel

För att förstå vad som är inkapsling i detalj, överväga följande bankkontoklass med insättnings- och balanseringsmetoder

class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}

Antag att en hackare lyckades få tillgång till koden på ditt bankkonto. Nu försöker han sätta in beloppet -100 på ditt konto på två sätt. Låt se hans första metod eller strategi.

Metod 1: Han försöker sätta in ett ogiltigt belopp (säg -100) på ditt bankkonto genom att manipulera koden.

Nu är frågan - är det möjligt? Låt undersöka.

Vanligtvis sätts en variabel i en klass som "privat" som visas nedan. Det kan endast nås med de metoder som definieras i klassen. Ingen annan klass eller objekt kan komma åt dem.

Om en datamedlem är privat betyder det att den endast kan nås inom samma klass. Ingen extern klass har åtkomst till privat datamedlem eller variabel från annan klass.

Så i vårt fall kan hackare inte sätta in belopp -100 till ditt konto.

Metod 2 : Hackers första metod misslyckades med att sätta in beloppet. Därefter försöker han sätta in ett belopp -100 genom att använda "insättning" -metoden.

Men metodimplementering har en kontroll för negativa värden. Så det andra tillvägagångssättet misslyckas också.

Således utsätter du aldrig dina data för en extern part. Vilket gör din applikation säker.

Hela koden kan tänkas på en kapsel, och du kan bara kommunicera via meddelandena. Därav namnet inkapsling.

Data gömmer sig i Java

Data gömmer sig i Java döljer variablerna för en klass från andra klasser. Det kan endast nås via metoden för deras nuvarande klass. Det döljer implementeringsinformationen från användarna. Men mer än att dölja data är det avsett för bättre hantering eller gruppering av relaterade data.

För att uppnå en mindre grad av inkapsling i Java kan du använda modifierare som "skyddad" eller "offentlig". Med inkapsling kan utvecklare enkelt ändra en del av koden utan att påverka andra.

Getter och Setter i Java

Getter och Setter i Java är två konventionella metoder som används för att hämta och uppdatera värden för en variabel. De används främst för att skapa, modifiera, radera och visa variabelvärdena. Settermetoden används för att uppdatera värden och gettermetoden används för att läsa eller hämta värdena. De är också kända som accessor och mutator.

Följande kod är ett exempel på getter- och settermetoder:

class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}

I ovanstående exempel är getBalance () -metoden getter-metod som läser värdet på variabel konto-balans och metoden setNumber () är settermetod som anger eller uppdaterar värde för variabelt konto-nummer.

Abstraktion vs. inkapsling

Inkapsling missförstås ofta med abstraktion. Låt oss studera-

  • Inkapsling handlar mer om hur man uppnår en funktion
  • Abstraktion handlar mer om "Vad" en klass kan göra.

Ett enkelt exempel för att förstå denna skillnad är en mobiltelefon. Där den komplexa logiken i kretskortet är inkapslad i en pekskärm och gränssnittet tillhandahålls för att abstrahera det.

Fördelar med inkapsling i Java

  • Inkapsling är bindande för data med dess relaterade funktioner. Här betyder funktionalitet "metoder" och data betyder "variabler"
  • Så vi håller variabla och metoder på ett ställe. Den platsen är "klass". Klass är basen för inkapsling.
  • Med Java Encapsulation kan du dölja (begränsa åtkomst) till viktiga datamedlemmar i din kod, vilket förbättrar säkerheten
  • Som vi diskuterade tidigare, om en datamedlem förklaras "privat", kan den endast nås inom samma klass. Ingen extern klass kan komma åt datamedlem (variabel) i andra klasser.
  • Men om du behöver komma åt dessa variabler måste du använda offentliga "getter" och "setter" metoder.

Intressanta artiklar...