Wat is inkapseling in Java?
Inkapseling in Java is een mechanisme om variabelen (gegevens) en methoden (code) samen als een enkele eenheid in te pakken. 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 het testen van eenheden.
In deze tutorial leer je-
- Wat is inkapseling in Java?
- Leer inkapseling met een voorbeeld
- Gegevens verbergen in Java
- Getter- en Setter-methoden in Java
- Abstractie versus inkapseling
- Voordelen van inkapseling in Java
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 toonbalansmethoden
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;}}
Stel dat een hacker erin geslaagd is toegang te krijgen tot de code van uw bankrekening. Nu probeert hij op twee manieren het bedrag van -100 op uw rekening te storten. Laten we eens kijken naar zijn eerste methode of benadering.
Benadering 1: Hij probeert een ongeldig bedrag (bijvoorbeeld -100) op uw bankrekening te storten door de code te manipuleren.
Nu is de vraag: is dat mogelijk? Laat het 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 ander 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 het privégegevenslid of de variabele van een andere klasse.
In ons geval kan de hacker dus geen bedrag van -100 op uw rekening storten.
Benadering 2 : Hackers eerste benadering slaagde er niet in het bedrag te storten. Vervolgens probeert hij een bedrag van -100 te storten door de "stortings" -methode te gebruiken.
Maar methode-implementatie heeft een controle op negatieve waarden. Dus ook de tweede benadering mislukt.
Zo stelt u uw gegevens nooit ter beschikking aan een externe partij. Dat maakt uw applicatie veilig.
De hele code kan worden gezien als een capsule en u kunt alleen communiceren via de berichten. Vandaar de naam inkapseling.
Gegevens verbergen in Java
Gegevens verbergen in Java is het verbergen van 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 mindere mate van inkapseling in Java te bereiken, kunt u modificatoren zoals "beschermd" of "openbaar" gebruiken. Met inkapseling kunnen ontwikkelaars een deel van de code gemakkelijk wijzigen zonder het 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 staan ook bekend als accessor en mutator.
De volgende code is een voorbeeld van getter- en setter-methoden:
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;}}
In het bovenstaande voorbeeld is de methode getBalance () de methode getter die de waarde van de variabele account_balance leest en de methode setNumber () is de methode setter die de waarde voor de variabele account_number instelt of bijwerkt.
Abstractie versus inkapseling
Inkapseling wordt vaak verkeerd begrepen bij abstractie. Laten we studeren-
- Inkapseling gaat meer over "hoe" om een functionaliteit te bereiken
- Abstractie gaat meer over "Wat" een klas 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 aanraakscherm en de interface is bedoeld om deze te abstraheren.
Voordelen van inkapseling in Java
- Inkapseling verbindt de gegevens met de bijbehorende functionaliteiten. Hier betekenen functionaliteiten 'methoden' en gegevens 'variabelen'
- Dus houden we variabelen en methoden op één plek. Die plaats is "klasse". Klasse is de basis voor inkapseling.
- Met Java Encapsulation kunt u essentiële gegevensleden in uw code verbergen (toegang beperken), wat de beveiliging verbetert
- Zoals we eerder hebben besproken, als een gegevenslid "privé" wordt verklaard, is het alleen toegankelijk binnen dezelfde klasse. Geen enkele externe klasse heeft toegang tot het gegevenslid (variabele) van een andere klasse.
- Als u echter toegang moet hebben tot deze variabelen, moet u de openbare "getter" en "setter" -methoden gebruiken.