Comportamento astratto e interfacce in Java
Definizione di un'interfaccia
Un’interfaccia in Java serve per definire un comportamento astratto. Un'interfaccia deve poi essere realizzata (implementata) da una classe che dichiari di avere tale comportamento.
Sintassi
Definire un’interfaccia è simile a definire una classe: si usa la parola chiave interface al posto di class.
Un’interfaccia può essere vista come una classe ridotta:
- Non può avere costruttori
- Non può avere variabili di esemplare
- Contiene le firme di uno o più metodi non statici (definiti implicitamente
public), ma non può definirne il codice
Implementare un’interfaccia
Se una classe intende realizzare concretamente un comportamento astratto definito in un’interfaccia, deve:
- Dichiarare di implementare l’interfaccia
- Definire i metodi dell’interfaccia, con la stessa firma
Esempio
Public interface Comparable è un esempio di interfaccia:
public interface Comparable {
int compareTo(Object other);
}
Una classe che dichiara di implementare un'interfaccia (o più di una), deve definire e realizzare tutti i metodi (pubblici) dichiarati nell'interfaccia.
Ad esempio, la classe BankAccount:
public class BankAccount implements Comparable {
...
public int compareTo(Object other) {
BankAccount acct = (BankAccount) other;
if (balance < acct.balance) return -1;
if (balance > acct.balance) return 1;
return 0;
}
...
}