Inkapseling in Java OOP's met voorbeeld

Wat is inkapseling in Java?

Inkapseling in Java is een mechanisme om variabelen (gegevens) en methoden (code) samen te voegen als een enkele eenheid. Het is het proces van het verbergen van informatiedetails en het beschermen van gegevens en gedrag van het object. Het is een van de vier belangrijke OOP-concepten. De encapsulate-klasse is gemakkelijk te testen, dus het is ook beter voor unit-testen.

In deze tutorial leer je-

Klik hier als de video niet toegankelijk is

Leer inkapseling met een voorbeeld

Om in detail te begrijpen wat inkapseling is, overweeg dan de volgende bankrekeningklasse met stortings- en toonsaldomethoden |__+_|

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

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

Nu is de vraag - Is dat mogelijk? Laten onderzoeken.

Gewoonlijk wordt een variabele in een klasse ingesteld als 'privé', zoals hieronder wordt weergegeven. Het is alleen toegankelijk met de methoden die in de klasse zijn gedefinieerd. Geen enkele andere klasse of object heeft er toegang toe.

Als een gegevenslid privé is, betekent dit dat het alleen toegankelijk is binnen dezelfde klasse. Geen enkele externe klasse heeft toegang tot privégegevenslid of variabele van een andere klasse.

Dus in ons geval kan een hacker geen bedrag van -100 op uw account storten.

Benadering 2 : Hacker's eerste benadering slaagde er niet in om het bedrag te storten. Vervolgens probeert hij een bedrag van -100 te storten met behulp van de 'storting'-methode.

Maar de implementatie van de methode heeft een controle op negatieve waarden. Dus ook de tweede benadering faalt.

Zo stel je je gegevens nooit bloot aan een externe partij. Dat maakt uw applicatie veilig.

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

Gegevens verbergen in Java

Gegevens verbergen in 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 een beter beheer of groepering van gerelateerde gegevens.

Om een ​​lagere mate van inkapseling in Java te bereiken, kunt u modifiers gebruiken zoals 'protected' of 'public'. Met inkapseling kunnen ontwikkelaars een deel van de code eenvoudig wijzigen zonder andere te beïnvloeden.

Getter en Setter in Java

Getter en Setter in Java zijn twee conventionele methoden die worden gebruikt om waarden van een variabele op te halen en bij te werken. Ze worden voornamelijk gebruikt om de variabelewaarden aan te maken, te wijzigen, te verwijderen en te bekijken. De setter-methode wordt gebruikt voor het bijwerken van waarden en de getter-methode wordt gebruikt voor het lezen of ophalen van de waarden. Ze worden ook wel accessor en mutator genoemd.

De volgende code is een voorbeeld van getter- en setter-methoden: |_+_|

In het bovenstaande voorbeeld is de getBalance()-methode een 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 met Abstractie. Laten we studeren-

  • Encapsulation gaat meer over 'hoe' een functionaliteit te bereiken
  • Abstractie gaat meer over 'wat' een klas kan.

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

Voordelen van inkapseling in Java

  • Inkapseling bindt de gegevens met de bijbehorende functionaliteiten. Functionaliteiten betekenen hier 'methoden' en data betekent 'variabelen'
  • Dus we houden variabele en methoden op één plek. Die plaats is 'klasse'. Klasse is de basis voor inkapseling.
  • Met Java Encapsulation kunt u kritieke gegevensleden in uw code verbergen (toegang beperken), wat de beveiliging verbetert
  • Zoals we eerder hebben besproken, als een gegevenslid als 'privé' wordt verklaard, is het alleen toegankelijk binnen dezelfde klasse. Geen enkele externe klasse heeft toegang tot gegevenslid (variabele) van een andere klasse.
  • Als u echter toegang wilt tot deze variabelen, moet u openbare 'getter' en 'setter' methoden.