Java-inkapsling

I den här handledningen lär du dig om inkapsling och datadöljande i Java med hjälp av exempel.

Java-inkapsling

Inkapsling är en av de viktigaste funktionerna i objektorienterad programmering. Inkapsling avser sammanslagning av fält och metoder i en enda klass.

Det förhindrar yttre klasser från att komma åt och ändra fält och metoder för en klass. Detta hjälper också till att uppnå datadöljande .

Exempel 1: Java-inkapsling

 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 exemplet ovan har vi skapat en klass med namnet Area. Huvudsyftet med denna klass är att beräkna ytan.

För att beräkna ett område behöver vi två variabler: längd och bredd och en metod: getArea(). Därför samlade vi dessa fält och metoder i en enda klass.

Här kan fälten och metoderna nås från andra klasser också. Därför är detta inte datadöljande .

Detta är bara inkapsling . Vi håller bara liknande koder tillsammans.

Obs! Människor anser ofta inkapsling som datadöljande, men det är inte helt sant.

Inkapsling avser sammanfogning av relaterade fält och metoder tillsammans. Detta kan användas för att åstadkomma datadöljande. Inkapsling i sig döljer inte data.

Varför inkapsling?

  • I Java hjälper inkapsling oss att hålla samman relaterade fält och metoder, vilket gör vår kod renare och lättläst.
  • Det hjälper till att kontrollera värdena i våra datafält. Till exempel,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Här gör vi åldersvariabeln privateoch tillämpar logik inuti setAge()metoden. Nu kan ålder inte vara negativ.
  • Getter- och settermetoderna ger skrivskyddad eller skrivbar tillgång till våra klassfält. Till exempel,
     getName() // provides read-only access setName() // provides write-only access
  • Det hjälper till att koppla bort komponenter i ett system. Till exempel kan vi kapsla in kod i flera buntar.
    Dessa frikopplade komponenter (bunt) kan utvecklas, testas och felsökas oberoende och samtidigt. Och ändringar i en viss komponent påverkar inte andra komponenter.
  • Vi kan också uppnå datadömning med inkapsling. I ovanstående exempel, om vi ändrar variabeln längd och bredd till privat, är åtkomsten till dessa fält begränsad.
    Och de hålls gömda från yttre klasser. Detta kallas datadöljande .

Datadöljande

Datadöljande är ett sätt att begränsa tillgången till våra datamedlemmar genom att dölja implementeringsinformationen. Inkapsling ger också ett sätt att dölja data.

Vi kan använda åtkomstmodifierare för att uppnå datadöljande. Till exempel,

Exempel 2: Data gömmer sig med den privata specifikatorn

 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 ålder är 24

I exemplet ovan har vi en privateålder i fältet. Eftersom det är privateså går det inte att komma åt det utanför klassen.

För att komma åt ålder har vi använt publicmetoder: getAge()och setAge(). Dessa metoder kallas getter- och settermetoder.

Att göra åldern privat tillät oss att begränsa obehörig åtkomst utanför klassen. Detta är datadöljande .

Om vi ​​försöker komma åt åldersfältet från huvudklassen får vi ett fel.

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

Intressanta artiklar...