Java indkapsling

I denne vejledning lærer du om indkapsling og dataskydning i Java ved hjælp af eksempler.

Java indkapsling

Indkapsling er et af nøglefunktionerne i objektorienteret programmering. Indkapsling refererer til bundtning af felter og metoder inden for en enkelt klasse.

Det forhindrer ydre klasser i at få adgang til og ændre felter og metoder i en klasse. Dette hjælper også med at opnå skjulning af 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(); ) )

Produktion

 Område: 30

I ovenstående eksempel har vi oprettet en klasse med navnet Area. Hovedformålet med denne klasse er at beregne arealet.

For at beregne et område, vi har brug for to variabler: længde og bredde og en metode: getArea(). Derfor har vi samlet disse felter og metoder i en enkelt klasse.

Her kan felterne og metoderne også tilgås fra andre klasser. Derfor er dette ikke dataskydning .

Dette er kun indkapsling . Vi holder bare lignende koder sammen.

Bemærk : Folk anser ofte indkapsling for at skjule data, men det er ikke helt sandt.

Indkapsling refererer til bundtning af relaterede felter og metoder sammen. Dette kan bruges til at opnå skjulning af data. Indkapsling i sig selv skjuler ikke data.

Hvorfor indkapsling?

  • I Java hjælper indkapsling os med at holde relaterede felter og metoder sammen, hvilket gør vores kode renere og let at læse.
  • Det hjælper med at kontrollere værdierne i vores datafelter. For eksempel,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Her laver vi aldersvariablen privateog anvender logik inde i setAge()metoden. Nu kan alder ikke være negativ.
  • Getter- og setter-metoderne giver skrivebeskyttet eller skrivebeskyttet adgang til vores klassefelter. For eksempel,
     getName() // provides read-only access setName() // provides write-only access
  • Det hjælper med at afkoble komponenter i et system. For eksempel kan vi indkapsle kode i flere bundter.
    Disse afkoblede komponenter (bundt) kan udvikles, testes og debugges uafhængigt og samtidigt. Og ændringer i en bestemt komponent har ingen indvirkning på andre komponenter.
  • Vi kan også opnå skjulning af data ved hjælp af indkapsling. I ovenstående eksempel, hvis vi ændrer længde og bredde til privat, så er adgangen til disse felter begrænset.
    Og de holdes skjult for ydre klasser. Dette kaldes dataskydning .

Data gemmer sig

Dataskydning er en måde at begrænse adgangen til vores datamedlemmer ved at skjule implementeringsoplysningerne. Indkapsling giver også en måde at skjule data på.

Vi kan bruge adgangsmodifikatorer til at opnå skjulning af data. For eksempel,

Eksempel 2: Data gemmer sig ved hjælp af den private specifikator

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

Produktion

 Min alder er 24

I ovenstående eksempel har vi en privatefeltalder. Da det er private, kan det ikke tilgås uden for klassen.

For at få adgang til alderen har vi brugt publicmetoder: getAge()og setAge(). Disse metoder kaldes getter- og settermetoder.

At gøre alderen privat tillod os at begrænse uautoriseret adgang uden for klassen. Dette skjuler sig data .

Hvis vi forsøger at få adgang til aldersfeltet fra hovedklassen, får vi en fejl.

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

Interessante artikler...