Sono utilizzate per poter dichiarare caratteristiche comuni tra classi di una determinata gerarchia.
Non possono essere istanziate, analogamente a quanto accade per le interfacce. Quindi non posso essere trasformate in oggetti.
Esempio classe Animale
public abstract class Animale
{
private String verso;
public void Animale (Stirng verso)
{
this.verso = verso;
}
public String getVerso()
{
return verso;
}
}
public abstract class Mammifero implements Animale
{
}
public abstract class Oviparo implements Animale
{
}
Differenze tra interfacce e classi astratte
Le interfacce definiscono i metodi da implementare il cui codice verrà definito nella classe che implementa quell’interfaccia.
Le classi astratte vengono ereditate dalle altre classi (come accade per tutti i tipi di classe) e i metodi vengono definiti e scritti nella classe astratta stessa, contrariamente a quanto accade nelle interfacce.