Java Encapsulation

In questo tutorial imparerai a conoscere l'incapsulamento e l'occultamento dei dati in Java con l'aiuto di esempi.

Java Encapsulation

L'incapsulamento è una delle caratteristiche chiave della programmazione orientata agli oggetti. L'incapsulamento si riferisce al raggruppamento di campi e metodi all'interno di una singola classe.

Impedisce alle classi esterne di accedere e modificare i campi e i metodi di una classe. Questo aiuta anche a ottenere l'occultamento dei dati .

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

Produzione

 Area: 30

Nell'esempio sopra, abbiamo creato una classe denominata Area. Lo scopo principale di questa classe è calcolare l'area.

Per calcolare un'area, abbiamo bisogno di due variabili: la lunghezza e la larghezza e un metodo: getArea(). Quindi, abbiamo raggruppato questi campi e metodi all'interno di una singola classe.

Qui è possibile accedere ai campi e ai metodi anche da altre classi. Quindi, questo non è nascondere i dati .

Questo è solo l' incapsulamento . Stiamo solo tenendo insieme codici simili.

Nota : le persone spesso considerano l'incapsulamento come un nascondiglio dei dati, ma non è del tutto vero.

L'incapsulamento si riferisce al raggruppamento di campi e metodi correlati insieme. Può essere utilizzato per nascondere i dati. L'incapsulamento in sé non significa nascondere i dati.

Perché l'incapsulamento?

  • In Java, l'incapsulamento ci aiuta a mantenere uniti i campi e i metodi correlati, il che rende il nostro codice più pulito e facile da leggere.
  • Aiuta a controllare i valori dei nostri campi dati. Per esempio,
     class Person ( private int age; public void setAge(int age) ( if (age>= 0) ( this.age = age; ) ) )

    Qui, stiamo rendendo variabile l'età privatee applicando la logica all'interno del setAge()metodo. Ora, l'età non può essere negativa.
  • I metodi getter e setter forniscono l'accesso di sola lettura o di sola scrittura ai nostri campi di classe. Per esempio,
     getName() // provides read-only access setName() // provides write-only access
  • Aiuta a disaccoppiare i componenti di un sistema. Ad esempio, possiamo incapsulare il codice in più bundle.
    Questi componenti disaccoppiati (bundle) possono essere sviluppati, testati e sottoposti a debug in modo indipendente e simultaneo. Inoltre, qualsiasi modifica in un particolare componente non ha alcun effetto su altri componenti.
  • Possiamo anche ottenere l'occultamento dei dati utilizzando l'incapsulamento. Nell'esempio precedente, se cambiamo la variabile di lunghezza e larghezza in privata, l'accesso a questi campi è limitato.
    E sono tenuti nascosti alle classi esterne. Questo si chiama nascondere i dati .

Dati nascosti

L'occultamento dei dati è un modo per limitare l'accesso dei nostri membri dei dati nascondendo i dettagli di implementazione. L'incapsulamento fornisce anche un modo per nascondere i dati.

Possiamo usare i modificatori di accesso per ottenere l'occultamento dei dati. Per esempio,

Esempio 2: dati nascosti utilizzando l'identificatore privato

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

Produzione

 La mia età è 24 anni

Nell'esempio sopra, abbiamo privateun'età del campo. Poiché lo è private, non è possibile accedervi dall'esterno della classe.

Per accedere all'età, abbiamo utilizzato publicmetodi: getAge()e setAge(). Questi metodi sono chiamati metodi getter e setter.

Rendere privata l'età ci ha permesso di limitare l'accesso non autorizzato dall'esterno della classe. Questo è nascondere i dati .

Se proviamo ad accedere al campo età dalla classe principale, otterremo un errore.

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

Articoli interessanti...