Interfacce e Classi astratte

Classe Astratta
Una classe astratta è una classe che viene definita solo per stabilire una interfaccia comune per tutte le sue sottoclassi.

Una classe con uno o più metodi astratti deve essere a sua volta dichiarata astratta.
Ogni sottoclasse dovrà definire tutti i metodi astratti, altrimenti dovrà essere etichettata anch'essa come stratta.
Oltre a metodi astratti una classe astratta può contenere dati e metodi non astratti.
Non può essere istanziata.
Può avere un costruttore che non sarà mai usato direttamente (perché non esisteranno mai istanze), ma sarà chiamato dai costruttori delle classi derivate.
Per estendere una classe Astratta si usa l'operatore extends ed ogni classe può estendere una sola classe Astratta.
/**/
public abstract class Persona{
    private String nome;
    public Persona(String s) { nome=s; }
    
    public abstract String lavora();

}
/**/
public abstract class Programmatore extends Persona{

public Programmatore (String s) { super(s); }

public String lavora() { return "Che fatica!"; }

}

Interfaccia
Un’interfaccia è una struttura che definisce un protocollo di comportamento, che può essere implementato da una qualunque classe.

Un’interfaccia definisce un insieme di metodi ma non li implementa.
Nell'Interfaccia non si possono definire variabili ma solo costanti.
Anche l'Interfaccia non può essere istanziata.
La classe che implementa un'interfaccia deve definire tutti i metodi.
Per dichiarare che una classe implementa un'interfaccia si deve usare la parola chiave implements.
Una classe può implementare infinite interfacce, fornendo la maggior parte dei benefici dell'eredità multipla (come C++) evitando la complessità.

public interface Comparable{

    int compareTo(T o);
}

public class Mela implements Comparable{
    private int grammi;
    private String tipo;

    public Mela(String tipo, int grammi){
        this.tipo = tipo;
        this.grammi = grammi;
    }

    public int compareTo(Mela m){
        return grammi - m.grammi;
    }
}

Lascia un commento

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