Inkapsling i Java
Vad รคr inkapsling i Java?
Inkapsling i Java รคr en mekanism fรถr att slรฅ ihop variabler (data) och metoder (kod) till en enda enhet. Det รคr processen att dรถlja informationsdetaljer och skydda objektets data och beteende. Det รคr ett av de fyra viktiga OOP-koncepten. Inkapslingsklassen รคr lรคtt att testa, sรฅ den รคr ocksรฅ bรคttre fรถr enhetstestning.
Klicka hรคr. om videon inte รคr tillgรคnglig
Lรคr dig inkapsling i Java med exempel
Fรถr att i detalj fรถrstรฅ vad inkapsling รคr, รถvervรคg fรถljande bankkontoklass med insรคttnings- och saldometoder
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
} else
account_balance = account_balance + a;
}
}
Anta att en hacker lyckades fรฅ tillgรฅng till koden fรถr 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 tillvรคgagรฅngssรคtt.
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. Den 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 kan komma รฅt privat datamedlem eller variabel i annan klass. Sรฅ i vรฅrt fall kan hacker inte sรคtta in belopp -100 till ditt konto.
Metod 2: Hackers fรถrsta tillvรคgagรฅngssรคtt misslyckades med att sรคtta in beloppet. Dรคrefter fรถrsรถker han sรคtta in ett belopp -100 genom att anvรคnda "insรคttningsmetoden".
Men metodimplementering har en kontroll fรถr negativa vรคrden. Sรฅ det andra tillvรคgagรฅngssรคttet misslyckas ocksรฅ.
Du exponerar alltsรฅ aldrig dina uppgifter fรถr en extern part. Vilket gรถr din applikation sรคker.
Hela koden kan ses som en kapsel, och du kan bara kommunicera genom meddelandena. Dรคrav namnet inkapsling.
Data gรถmmer sig Java
Data gรถmmer sig Java dรถljer variablerna i en klass frรฅn andra klasser. Den kan endast nรฅs med metoden fรถr deras nuvarande klass. Det dรถljer implementeringsdetaljerna fรถr anvรคndarna. Men mer รคn att dรถlja data, det รคr avsett fรถr bรคttre hantering eller gruppering av relaterad 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 in Java
Getter och Setter in 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, รคndra, ta bort 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 en accessor och mutator.
Fรถljande kod รคr ett exempel pรฅ getter- och settermetoder:
class Account{
private int account_number;
private int account_balance;
// getter method
public int getBalance() {
return this.account_balance;
}
// setter method
public void setNumber(int num) {
this.account_number = num;
}
}
I exemplet ovan รคr getBalance()-metoden en getter-metod som lรคser vรคrdet av variabel kontosaldo och setNumber()-metoden รคr en sรคttermetod som stรคller in eller uppdaterar vรคrdet fรถr variabel kontonummer.
Abstraktion vs inkapsling
Ofta missfรถrstรฅs inkapsling med Abstraktion. Lรฅt oss studera-
- Inkapsling handlar mer om "Hur" man uppnรฅr en funktionalitet
- 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 binder data med dess relaterade funktioner. Hรคr betyder funktionalitet "metoder" och data betyder "variabler"
- Sรฅ vi hรฅller variabel och metoder pรฅ ett stรคlle. Det stรคllet รคr "klass". Klass รคr basen fรถr inkapsling.
- Med Java Inkapsling 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 bara nรฅs inom samma klass. Ingen extern klass kan komma รฅt datamedlem (variabel) av annan klass.
- Men om du behรถver komma รฅt dessa variabler mรฅste du anvรคnda offentlig "getter" och "setter" metoder.






