Java innkapsling

I denne opplæringen lærer du om innkapsling og skjuling av data i Java ved hjelp av eksempler.

Java innkapsling

Innkapsling er en av nøkkelegenskapene til objektorientert programmering. Innkapsling refererer til samling av felt og metoder i en enkelt klasse.

Det hindrer ytre klasser i å få tilgang til og endre felt og metoder i en klasse. Dette hjelper også til å oppnå skjuling av data .

Eksempel 1: Java Encapsulation

 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(); ) )

Produksjon

 Område: 30

I eksemplet ovenfor har vi opprettet en klasse med navnet Area. Hovedformålet med denne klassen er å beregne arealet.

For å beregne et område, trenger vi to variabler: lengde og bredde og en metode: getArea(). Derfor samlet vi disse feltene og metodene i en enkelt klasse.

Her kan du også få tilgang til feltene og metodene fra andre klasser. Derfor er dette ikke dataskjuling .

Dette er bare innkapsling . Vi holder bare lignende koder sammen.

Merk : Folk anser ofte innkapsling som skjuling av data, men det er ikke helt sant.

Innkapsling refererer til samling av relaterte felt og metoder sammen. Dette kan brukes til å oppnå skjuling av data. Innkapsling i seg selv skjuler ikke data.

Hvorfor innkapsling?

  • I Java hjelper innkapsling oss med å holde relaterte felt og metoder sammen, noe som gjør koden vår renere og lett å lese.
  • Det hjelper å kontrollere verdiene til datafeltene våre. For eksempel,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Her lager vi aldersvariabelen privateog bruker logikk inne i setAge()metoden. Nå kan alderen ikke være negativ.
  • Getter- og settermetodene gir skrivebeskyttet eller skrivebeskyttet tilgang til klassefeltene våre. For eksempel,
     getName() // provides read-only access setName() // provides write-only access
  • Det hjelper å koble fra komponenter i et system. For eksempel kan vi kapsle inn koden i flere bunter.
    Disse frakoblede komponentene (bunt) kan utvikles, testes og feilsøkes uavhengig og samtidig. Og eventuelle endringer i en bestemt komponent har ingen innvirkning på andre komponenter.
  • Vi kan også oppnå skjulning av data ved hjelp av innkapsling. I eksemplet ovenfor, hvis vi endrer lengden og bredden til privat, så er tilgangen til disse feltene begrenset.
    Og de holdes skjult for ytre klasser. Dette kalles dataskjuling .

Datahulling

Datahulling er en måte å begrense tilgangen til våre datamedlemmer ved å skjule implementeringsdetaljene. Innkapsling gir også en måte å skjule data på.

Vi kan bruke tilgangsmodifikatorer for å oppnå skjuling av data. For eksempel,

Eksempel 2: Skjuling av data ved bruk av den private spesifikatoren

 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()); ) )

Produksjon

 Min alder er 24

I eksemplet ovenfor har vi en privatefeltalder. Siden det er privatedet, kan det ikke nås fra utenfor klassen.

For å få tilgang til alder har vi brukt publicmetoder: getAge()og setAge(). Disse metodene kalles getter og setter metoder.

Å gjøre alderen privat tillot oss å begrense uautorisert tilgang utenfor klassen. Dette skjuler seg data .

Hvis vi prøver å få tilgang til aldersfeltet fra hovedklassen, får vi en feil.

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

Interessante artikler...