Classe Astratta

Riassunto

Una classe astratta in Java è una classe che non può essere istanziata direttamente, ma può contenere metodi astratti e concreti che possono essere ereditati da altre classi.

Definizione:

Una classe astratta è una classe che non può essere istanziata direttamente. Può contenere sia metodi astratti che concreti. I metodi astratti non hanno un'implementazione e devono essere implementati nelle classi figlie.

Utilità:

  • Definizione di Interfacce: Le classi astratte possono definire metodi comuni che devono essere implementati dalle classi figlie, fornendo una sorta di contratto.
  • Riusabilità del Codice: Le classi astratte possono contenere implementazioni di base che possono essere ereditate da più classi figlie, riducendo la duplicazione del codice.
  • Strutturazione del Codice: Le classi astratte possono fornire una struttura logica per organizzare le classi correlate in una gerarchia.

Esempio:

Ecco un esempio di classe astratta in Java:

abstract class Animale {
      abstract void emettereSuono();
      
      void dormire() {
          System.out.println("Zzz");
      }
  }
  
  class Cane extends Animale {
      void emettereSuono() {
          System.out.println("Woof");
      }
  }
  
  class Gatto extends Animale {
      void emettereSuono() {
          System.out.println("Meow");
      }
  }
  
  public class Main {
      public static void main(String[] args) {
          Animale cane = new Cane();
          cane.emettereSuono();
          cane.dormire();
  
          Animale gatto = new Gatto();
          gatto.emettereSuono();
          gatto.dormire();
      }
  }

In questo esempio, la classe Animale è astratta e contiene un metodo astratto emettereSuono(). Le classi figlie Cane e Gatto estendono la classe Animale e implementano il metodo emettereSuono() in modo specifico per ogni tipo di animale.