Hva er innkapsling i Java?
Innkapsling i Java er en mekanisme for å pakke sammen variabler (data) og metoder (kode) som en enkelt enhet. Det er prosessen med å skjule informasjonsdetaljer og beskytte data og oppførsel til objektet. Det er et av de fire viktige OOP-konseptene. Kapslingsklassen er enkel å teste, så den er også bedre for enhetstesting.
I denne veiledningen vil du lære-
- Hva er innkapsling i Java?
- Lær innkapsling med et eksempel
- Datahulling i Java
- Getter og Setter Methods i Java
- Abstraksjon vs. innkapsling
- Fordeler med innkapsling i Java
Klikk her hvis videoen ikke er tilgjengelig
Lær innkapsling med et eksempel
For å forstå hva som er innkapsling i detalj, bør du vurdere følgende bankkontoklasse med innskudds- og show-saldo-metoder
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;}}
Anta at en hacker klarte å få tilgang til koden til bankkontoen din. Nå prøver han å sette inn beløpet -100 på kontoen din på to måter. La se hans første metode eller tilnærming.
Tilnærming 1: Han prøver å sette inn et ugyldig beløp (si -100) på bankkontoen din ved å manipulere koden.
Nå er spørsmålet - er det mulig? La oss undersøke det.
Vanligvis settes en variabel i en klasse som "privat" som vist nedenfor. Det er bare tilgjengelig med metodene som er definert i klassen. Ingen andre klasser eller objekter har tilgang til dem.
Hvis et datamedlem er privat, betyr det at det bare kan nås i samme klasse. Ingen utenforstående klasse har tilgang til privat datamedlem eller variabel fra en annen klasse.
Så i vårt tilfelle kan ikke hacker sette inn beløpet -100 på kontoen din.
Metode 2 : Hacker's første tilnærming klarte ikke å sette inn beløpet. Deretter prøver han å sette inn et beløp -100 ved å bruke "innskudd" -metoden.
Men metodeimplementering har en sjekk for negative verdier. Så den andre tilnærmingen mislykkes også.
Dermed utsetter du aldri dataene dine for en ekstern part. Noe som gjør søknaden din sikker.
Hele koden kan tenkes på en kapsel, og du kan bare kommunisere gjennom meldingene. Derav navnet innkapsling.
Datahulling i Java
Data Hiding in Java gjemmer variablene til en klasse fra andre klasser. Det er bare tilgjengelig via metoden til deres nåværende klasse. Det skjuler implementeringsdetaljene fra brukerne. Men mer enn å skjule data, er det ment for bedre styring eller gruppering av relaterte data.
For å oppnå en mindre grad av innkapsling i Java, kan du bruke modifikatorer som "beskyttet" eller "offentlig". Med innkapsling kan utviklere enkelt endre en del av koden uten å påvirke andre.
Getter og Setter i Java
Getter og Setter i Java er to konvensjonelle metoder som brukes til å hente og oppdatere verdiene til en variabel. De brukes hovedsakelig til å opprette, endre, slette og vise variabelverdiene. Settermetoden brukes til å oppdatere verdier og gettermetoden brukes til å lese eller hente verdiene. De er også kjent som en accessor og mutator.
Følgende kode er et eksempel på getter- og 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 eksemplet ovenfor er getBalance () -metoden getter-metode som leser verdien av variabel konto_balanse og setNumber () -metoden er settermetode som angir eller oppdaterer verdi for variabel konto-nummer.
Abstraksjon vs. innkapsling
Ofte blir innkapsling misforstått med Abstraksjon. La oss studere-
- Innkapsling handler mer om "Hvordan" for å oppnå en funksjonalitet
- Abstraksjon handler mer om "Hva" en klasse kan gjøre.
Et enkelt eksempel for å forstå denne forskjellen er en mobiltelefon. Hvor den komplekse logikken i kretskortet er innkapslet i en berøringsskjerm, og grensesnittet er gitt for å trekke det ut.
Fordeler med innkapsling i Java
- Innkapsling er bindende for dataene med tilhørende funksjonalitet. Her betyr funksjonalitet "metoder" og data betyr "variabler"
- Så vi holder variabel og metoder på ett sted. Det stedet er "klasse". Klassen er basen for innkapsling.
- Med Java Encapsulation kan du skjule (begrense tilgangen) til kritiske datamedlemmer i koden din, noe som forbedrer sikkerheten
- Som vi diskuterte tidligere, hvis et datamedlem blir erklært "privat", kan det bare nås innen samme klasse. Ingen utenforstående klasse har tilgang til datamedlem (variabel) i andre klasser.
- Men hvis du trenger tilgang til disse variablene, må du bruke offentlige "getter" og "setter" metoder.