Astrazione Java


Classi astratte e metodi

L' astrazione dei dati è il processo per nascondere determinati dettagli e mostrare all'utente solo le informazioni essenziali.
L'astrazione può essere ottenuta con classi o interfacce astratte (di cui imparerai di più nel prossimo capitolo).

La abstractparola chiave è un modificatore di non accesso, utilizzato per classi e metodi:

  • Classe astratta: è una classe ristretta che non può essere utilizzata per creare oggetti (per accedervi deve essere ereditata da un'altra classe).

  • Metodo astratto: può essere utilizzato solo in una classe astratta e non ha un corpo. Il corpo è fornito dalla sottoclasse (ereditato da).

Una classe astratta può avere metodi sia astratti che regolari:

abstract class Animal {
  public abstract void animalSound();
  public void sleep() {
    System.out.println("Zzz");
  }
}

Dall'esempio sopra, non è possibile creare un oggetto della classe Animal:

Animal myObj = new Animal(); // will generate an error

Per accedere alla classe astratta, deve essere ereditata da un'altra classe. Convertiamo la classe Animal che abbiamo usato nel capitolo Polymorphism in una classe astratta:

Ricorda dal capitolo Ereditarietà che usiamo la extendsparola chiave per ereditare da una classe.

Esempio

// Abstract class
abstract class Animal {
  // Abstract method (does not have a body)
  public abstract void animalSound();
  // Regular method
  public void sleep() {
    System.out.println("Zzz");
  }
}

// Subclass (inherit from Animal)
class Pig extends Animal {
  public void animalSound() {
    // The body of animalSound() is provided here
    System.out.println("The pig says: wee wee");
  }
}

class Main {
  public static void main(String[] args) {
    Pig myPig = new Pig(); // Create a Pig object
    myPig.animalSound();
    myPig.sleep();
  }
}

Perché e quando utilizzare classi e metodi astratti?

Per ottenere la sicurezza, nascondi determinati dettagli e mostra solo i dettagli importanti di un oggetto.

Nota: l'astrazione può essere ottenuta anche con Interfacce , di cui imparerai di più nel prossimo capitolo.