Sobes.tech
Junior — Middle

Quali sono le differenze tra una classe astratta e un'interfaccia nella programmazione orientata agli oggetti?

sobes.tech AI

Risposta dell'AI

Una classe astratta e un'interfaccia sono meccanismi diversi per descrivere contratti e comportamenti nella programmazione orientata agli oggetti, ma con differenze chiave:

  • Classe astratta può contenere metodi astratti (senza implementazione) e metodi concreti con implementazione. Può avere stato (campi). Le classi ereditano dalla classe astratta e possono sovrascrivere i metodi.

  • Interfaccia descrive solo un insieme di metodi senza implementazione e non contiene stato. La classe che implementa l'interfaccia deve implementare tutti i suoi metodi.

Esempio di differenze:

  • La classe astratta è adatta quando si deve definire un'implementazione di base e uno stato comune per gli eredi.
  • L'interfaccia viene usata per descrivere capacità che possono essere implementate da diverse classi senza relazione di ereditarietà.

Ad esempio, l'interfaccia Flyable può descrivere il metodo fly(), e la classe astratta Bird può contenere il campo wingSpan e il metodo sing() con implementazione.