Indkapsling i Java

Hvad er indkapsling i Java?

Indkapsling i Java er en mekanisme til at samle variabler(data) og metoder(kode) sammen som en enkelt enhed. Det er processen med at skjule informationsdetaljer og beskytte objektets data og adfærd. Det er et af de fire vigtige OOP-koncepter. Encapsulate-klassen er nem at teste, så den er også bedre til enhedstestning.

Klik link. hvis videoen ikke er tilgængelig

Lær indkapsling i Java med Eksempel

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

Antag, at det lykkedes en hacker 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 (f.eks. -100) på din bankkonto ved at manipulere koden.

Indkapsling i Java

Nu er spørgsmålet - Er det muligt? Lad undersøge. Normalt er en variabel i en klasse sat som "privat" som vist nedenfor. Den kan kun tilgås med de metoder, der er defineret i klassen. Ingen anden klasse eller objekt kan få adgang til dem.

Indkapsling i Java

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 i en anden klasse. Så i vores tilfælde kan hacker ikke indbetale beløb -100 til din konto.

Indkapsling i Java

Fremgangsmåde 2: Hackers første tilgang mislykkedes med at indbetale beløbet. Dernæst forsøger han at indbetale et beløb -100 ved at bruge "indbetalingsmetoden".

Indkapsling i Java

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

Indkapsling i Java

Du udsætter således aldrig dine data for en ekstern part. Hvilket gør din applikation sikker.

Indkapsling i Java

Hele koden kan tænkes som en kapsel, og du kan kun kommunikere gennem beskederne. Deraf navnet indkapsling.

Data gemmer sig i Java

Data gemmer sig i Java skjuler variablerne i en klasse fra andre klasser. Det kan kun tilgås via metoden for deres nuværende klasse. Det skjuler implementeringsdetaljerne for brugerne. Men mere end at skjule data, det er 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 én del af koden uden at påvirke andre.

Getter og Setter ind Java

Getter og Setter ind Java er to konventionelle metoder, der bruges til at hente og opdatere værdier af en variabel. De bruges hovedsageligt til at oprette, ændre, slette og se variabelværdierne. Setter-metoden bruges til at opdatere 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 setter-metoder:

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 ovenstående eksempel er getBalance()-metoden en getter-metode, der læser værdien af ​​variabel account_balance, og setNumber()-metoden er en seter-metode, der indstiller eller opdaterer værdien for variabel account_number.

Abstraktion vs. indkapsling

Ofte misforstås indkapsling med abstraktion. Lad os studere-

  • Indkapsling handler mere om "Hvordan" man opnår en funktionalitet
  • Abstraktion handler mere om "hvad" en klasse kan.

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 interfacet er tilvejebragt for at abstrahere det.

Fordele ved indkapsling i Java

  • Indkapsling binder dataene med dets relaterede funktionaliteter. Her betyder funktionaliteter "metoder" og data betyder "variabler"
  • Så vi holder variable og metoder ét sted. Det sted er "klasse". Klasse er grundlaget for indkapsling.
  • Med Java Indkapsling kan du skjule (begrænse adgangen) til kritiske datamedlemmer i din kode, hvilket forbedrer sikkerheden
  • Som vi diskuterede tidligere, hvis et datamedlem er erklæret "privat", så kan det kun tilgås inden for samme klasse. Ingen ekstern klasse kan få adgang til datamedlem (variabel) af anden klasse.
  • Men hvis du har brug for at få adgang til disse variabler, skal du bruge offentlig "getter" og "setter" metoder.

Opsummer dette indlæg med: