Indkapsling i Java OOP'er med eksempel

Indholdsfortegnelse:

Anonim

Hvad er indkapsling i Java?

Indkapsling i Java er en mekanisme til at pakke variabler (data) og metoder (kode) sammen som en enkelt enhed. Det er processen med at skjule informationsdetaljer og beskytte data og objektets opførsel. Det er et af de fire vigtige OOP-koncepter. Indkapslingsklassen er let at teste, så den er også bedre til enhedstest.

I denne vejledning lærer du-

  • Hvad er indkapsling i Java?
  • Lær indkapsling med et eksempel
  • Data gemmer sig i Java
  • Getter og Setter Metoder i Java
  • Abstraktion vs. indkapsling
  • Fordele ved indkapsling i Java

Klik her, hvis videoen ikke er tilgængelig

Lær indkapsling med et eksempel

For at forstå, hvad der er indkapsling i detaljer, skal du overveje følgende bankkontoklasse med indbetalings- og 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;}}

Antag, at en hacker formåede at få adgang til koden på din bankkonto. Nu forsøger han at indbetale beløb -100 på din konto på to måder. Lad os se hans første metode eller tilgang.

Fremgangsmåde 1: Han forsøger at indbetale et ugyldigt beløb (siger -100) på din bankkonto ved at manipulere koden.

Nu er spørgsmålet - er det muligt? Lad os undersøge det.

Normalt indstilles en variabel i en klasse som "privat" som vist nedenfor. Det kan kun fås med de metoder, der er defineret i klassen. Ingen anden klasse eller objekt kan få adgang til dem.

Hvis et datamedlem er privat, betyder det, at det kun kan tilgås inden for samme klasse. Ingen ekstern klasse kan få adgang til privat datamedlem eller variabel fra en anden klasse.

Så i vores tilfælde kan hacker ikke indbetale beløb -100 til din konto.

Metode 2 : Hacker's første tilgang kunne ikke deponere beløbet. Dernæst forsøger han at deponere et beløb -100 ved hjælp af "deposit" -metoden.

Men metodeimplementering har en kontrol for negative værdier. Så den anden tilgang mislykkes også.

Således udsætter du aldrig dine data for en ekstern part. Hvilket gør din ansøgning sikker.

Hele koden kan tænkes på en kapsel, og du kan kun kommunikere gennem meddelelserne. Deraf navnet indkapsling.

Data gemmer sig i Java

Data gemmer sig i Java skjuler variablerne i en klasse fra andre klasser. Det kan kun fås via metoden for deres nuværende klasse. Det skjuler implementeringsoplysningerne fra brugerne. Men mere end at skjule data er det beregnet til bedre styring eller gruppering af relaterede data.

For at opnå en mindre grad af indkapsling i Java kan du bruge modifikatorer som "beskyttet" eller "offentlig". Med indkapsling kan udviklere nemt ændre en del af koden uden at påvirke den anden.

Getter og Setter i Java

Getter og Setter i Java er to konventionelle metoder, der bruges til at hente og opdatere værdier for en variabel. De bruges hovedsageligt til at oprette, ændre, slette og se variabelværdierne. Setter-metoden bruges til opdatering af værdier, og getter-metoden bruges til at læse eller hente værdierne. De er også kendt 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 ovenstående eksempel er getBalance () -metoden getter-metode, der læser værdien af ​​variabel konto_balance og setNumber () -metoden er setter-metode, der angiver eller opdaterer værdi for variabel konto-nummer.

Abstraktion vs. indkapsling

Ofte misforstås indkapsling med abstraktion. Lader studere-

  • Indkapsling handler mere om "Sådan" opnås en funktionalitet
  • Abstraktion handler mere om "Hvad" en klasse kan gøre.

Et simpelt eksempel på at forstå denne forskel er en mobiltelefon. Hvor den komplekse logik i printkortet er indkapslet i en berøringsskærm, og grænsefladen er tilvejebragt for at abstrakte den ud.

Fordele ved indkapsling i Java

  • Indkapsling binder dataene med dens relaterede funktioner. Her betyder funktionalitet "metoder" og data betyder "variabler"
  • Så vi holder variable og metoder ét sted. Dette sted er "klasse". Klassen er basen for indkapsling.
  • Med Java Encapsulation kan du skjule (begrænse adgang) til vigtige datamedlemmer i din kode, hvilket forbedrer sikkerheden
  • Som vi diskuterede tidligere, hvis et datamedlem erklæres "privat", kan det kun fås inden for samme klasse. Ingen ekstern klasse kan få adgang til datamedlem (variabel) i anden klasse.
  • Men hvis du har brug for adgang til disse variabler, skal du bruge offentlige "getter" og "setter" metoder.