DIFFERENZE TRA CLASSI ASTRATTE E INTERFACCE

INDICE TUTORIAL

Differenze tra classi astratte e interfacce

Entrambe permettono di definire un concetto senza dover conoscere i dettagli di una classe, dettagli che saranno implementati dai figli.

Difference between Abstract class and Interface in Java 8 | Java67

Differenze sintattiche principali:

  • Una classe astratta, oltre a metodi astratti, può contenere dati e metodi non astratti. Una interfaccia no.
  • Una classe astratta può avere un costruttore. Una interfaccia no.
  • In una interfaccia si possono definire solo costanti.
  • In una interfaccia i metodi la visibità sarà public in automatico (c’è anche la possibilità di usare quella di default ma i figli saranno “costretti” a  fare l’override dei metodi con public, anche se sono nello stesso package).

Oltre le differenze sintattiche, si usa una classe astratta o una interfaccia in base al tipo di legame che si vuole instaurare con le classi derivate. Se si vuole un legame molto forte con le classi derivate si usa una classe astratta, in questo modo tutti i figli avranno un comportamento comune (ricordiamoci che una classe può estendere solo una classe). Le interfacce, invece, servono per definire un comportamento più generico con i figli, potendo questi essere di vario genere e natura (ciò è dovuto al fatto che un figlio può implementare tante interfacce ma solo una classe, astratta o  meno).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *