Java-inkapseling

In deze tutorial leer je met behulp van voorbeelden over inkapseling en het verbergen van gegevens in Java.

Java-inkapseling

Inkapseling is een van de belangrijkste kenmerken van objectgeoriënteerd programmeren. Inkapseling verwijst naar het bundelen van velden en methoden binnen een enkele klasse.

Het voorkomt dat buitenklassen toegang krijgen tot velden en methoden van een klasse en deze wijzigen. Dit helpt ook om gegevens te verbergen .

Voorbeeld 1: Java-inkapseling

 class Area ( // fields to calculate area int length; int breadth; // constructor to initialize values Area(int length, int breadth) ( this.length = length; this.breadth = breadth; ) // method to calculate area public void getArea() ( int area = length * breadth; System.out.println("Area: " + area); ) ) class Main ( public static void main(String() args) ( // create object of Area // pass value of length and breadth Area rectangle = new Area(5, 6); rectangle.getArea(); ) )

Uitvoer

 Gebied: 30

In het bovenstaande voorbeeld hebben we een klasse gemaakt met de naam Area. Het belangrijkste doel van deze klasse is om de oppervlakte te berekenen.

Om een gebied te berekenen, moeten we twee variabelen: lengte en breedte en een methode: getArea(). Daarom hebben we deze velden en methoden gebundeld in één klasse.

Hier zijn de velden en methoden ook toegankelijk vanuit andere klassen. Dit is dus geen gegevens verbergen .

Dit is slechts inkapseling . We houden alleen vergelijkbare codes bij elkaar.

Opmerking : mensen beschouwen inkapseling vaak als het verbergen van gegevens, maar dat is niet helemaal waar.

Inkapseling verwijst naar het bundelen van gerelateerde velden en methoden samen. Dit kan worden gebruikt om gegevens te verbergen. Inkapseling op zichzelf is niet het verbergen van gegevens.

Waarom inkapseling?

  • In Java helpt inkapseling ons om gerelateerde velden en methoden bij elkaar te houden, waardoor onze code schoner en gemakkelijk te lezen is.
  • Het helpt om de waarden van onze datavelden te beheersen. Bijvoorbeeld,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Hier maken we de leeftijdsvariabele privateen passen we logica toe binnen de setAge()methode. Nu kan leeftijd niet negatief zijn.
  • De getter- en setter-methoden bieden alleen-lezen of alleen- schrijven toegang tot onze klassevelden. Bijvoorbeeld,
     getName() // provides read-only access setName() // provides write-only access
  • Het helpt om componenten van een systeem los te koppelen. We kunnen code bijvoorbeeld in meerdere bundels inkapselen.
    Deze ontkoppelde componenten (bundel) kunnen onafhankelijk en gelijktijdig worden ontwikkeld, getest en debuggen. En eventuele wijzigingen in een bepaald onderdeel hebben geen effect op andere onderdelen.
  • We kunnen ook gegevens verbergen door middel van inkapseling. Als we in het bovenstaande voorbeeld de variabele lengte en breedte wijzigen in privé, is de toegang tot deze velden beperkt.
    En ze worden verborgen gehouden voor uiterlijke klassen. Dit wordt het verbergen van gegevens genoemd .

Gegevens verbergen

Het verbergen van gegevens is een manier om de toegang van onze gegevensleden te beperken door de implementatiedetails te verbergen. Inkapseling biedt ook een manier om gegevens te verbergen.

We kunnen toegangsmodificatoren gebruiken om gegevens te verbergen. Bijvoorbeeld,

Voorbeeld 2: gegevens verbergen met de privéspecificatie

 class Person ( // private field private int age; // getter method public int getAge() ( return age; ) // setter method public void setAge(int age) ( this.age = age; ) ) class Main ( public static void main(String() args) ( // create an object of Person Person p1 = new Person(); // change age using setter p1.setAge(24); // access age using getter System.out.println("My age is " + p1.getAge()); ) )

Uitvoer

 Mijn leeftijd is 24

In het bovenstaande voorbeeld hebben we een privateveldleeftijd. Omdat het zo is private, is het niet toegankelijk van buiten de klas.

Om toegang te krijgen tot leeftijd, hebben we publicmethoden gebruikt : getAge()en setAge(). Deze methoden worden getter- en setter-methoden genoemd.

Door leeftijd privé te maken, konden we ongeautoriseerde toegang van buiten de klas beperken. Dit is het verbergen van gegevens .

Als we proberen toegang te krijgen tot het leeftijdsveld vanuit de hoofdklasse, krijgen we een foutmelding.

 // error: age has private access in Person p1.age = 24;

Interessante artikelen...