Inkapseling erin Java

Wat is inkapseling? Java?

Inkapseling erin Java is een mechanisme om variabelen (data) en methoden (code) samen te voegen tot één eenheid. Het is het proces van het verbergen van informatiedetails en het beschermen van data en gedrag van het object. Het is een van de vier belangrijke OOP-concepten. De encapsulate-klasse is eenvoudig te testen, dus is het ook beter voor unit-testen.

Klik hier als de video niet toegankelijk is

Leer inkapseling in Java met Voorbeeld

Om in detail te begrijpen wat incapsulatie is, moet u de volgende bankrekeningklasse met stortings- en weergavesaldomethoden bekijken

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;
    }
}

Stel dat een hacker toegang heeft gekregen tot de code van uw bankrekening. Nu probeert hij het bedrag -100 op twee manieren op uw rekening te storten. Laten we zijn eerste methode of aanpak bekijken.

Benadering 1: Hij probeert een ongeldig bedrag (bijvoorbeeld -100) op uw bankrekening te storten door de code te manipuleren.

Inkapseling erin Java

Nu is de vraag – Is dat mogelijk? Laten we het onderzoeken. Meestal worden variabelen in een klasse ingesteld als "private", zoals hieronder weergegeven. Ze kunnen alleen worden benaderd met de methoden die in de klasse zijn gedefinieerd. Geen enkele andere klasse of object kan ze benaderen.

Inkapseling erin Java

Als een data-lid privé is, betekent dit dat het alleen toegankelijk is binnen dezelfde klasse. Geen enkele externe klasse kan toegang krijgen tot een privé-data-lid of variabele van een andere klasse. Dus in ons geval kan een hacker het bedrag -100 niet op uw account storten.

Inkapseling erin Java

Aanpak 2: Hackers eerste aanpak mislukte om het bedrag te storten. Vervolgens probeert hij een bedrag van -100 te storten met behulp van de "deposit"-methode.

Inkapseling erin Java

Maar bij de implementatie van de methode wordt gecontroleerd op negatieve waarden. Ook de tweede benadering faalt dus.

Inkapseling erin Java

Zo stelt u uw gegevens nooit bloot aan een externe partij. Dat maakt uw applicatie veilig.

Inkapseling erin Java

De gehele code kan worden gezien als een capsule, en je kunt alleen communiceren via de berichten. Vandaar de naam encapsulatie.

Gegevens verstoppen Java

Gegevens verstoppen Java verbergt de variabelen van een klasse voor andere klassen. Het is alleen toegankelijk via de methode van hun huidige klasse. Het verbergt de implementatiedetails voor de gebruikers. Maar meer dan het verbergen van gegevens, is het bedoeld voor beter beheer of groepering van gerelateerde gegevens. Om een ​​lagere mate van inkapseling te bereiken in Java, kunt u modifiers gebruiken zoals "protected" of "public". Met encapsulatie kunnen ontwikkelaars eenvoudig een deel van de code wijzigen zonder dat dit gevolgen heeft voor een ander deel.

Getter en Setter binnen Java

Getter en Setter binnen Java zijn twee conventionele methoden die worden gebruikt om waarden van een variabele op te halen en bij te werken. Ze worden voornamelijk gebruikt voor het aanmaken, wijzigen, verwijderen en bekijken van de variabelewaarden. De settermethode wordt gebruikt voor het bijwerken van waarden en de gettermethode wordt gebruikt voor het lezen of ophalen van de waarden. Ze staan ​​ook bekend als accessor en mutator.

De volgende code is een voorbeeld van getter- en settermethoden:

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;
    }
}

In het bovenstaande voorbeeld is de getBalance()-methode de getter-methode die de waarde van de variabele account_balance leest, en de setNumber()-methode is de setter-methode die de waarde voor de variabele account_number instelt of bijwerkt.

Abstractie versus inkapseling

Vaak wordt inkapseling verkeerd begrepen Abstractie. Laten we studeren-

  • Inkapseling gaat meer over “Hoe” een functionaliteit te bereiken
  • Abstractie gaat meer over ‘Wat’ een klasse kan doen.

Een eenvoudig voorbeeld om dit verschil te begrijpen is een mobiele telefoon. Waar de complexe logica in de printplaat is ingekapseld in een touchscreen, en de interface is voorzien om het eruit te abstraheren.

Voordelen van inkapseling in Java

  • Encapsulatie is het binden van de gegevens met de bijbehorende functionaliteiten. Functionaliteiten betekenen hier “methoden” en data “variabelen”
  • We houden variabelen en methoden dus op één plek. Die plaats is ‘klasse’. Klasse is de basis voor inkapseling.
  • met Java Inkapseling: u kunt de toegang tot kritieke gegevens in uw code verbergen (de toegang beperken), wat de beveiliging verbetert
  • Zoals we eerder bespraken, als een data member is gedeclareerd als "private", dan kan deze alleen worden benaderd binnen dezelfde klasse. Geen enkele externe klasse kan toegang krijgen tot een data member (variabele) van een andere klasse.
  • Als u echter toegang tot deze variabelen wilt hebben, moet u gebruiken publieke “getter” en “setter” werkwijzen.