Home Insegnanti Contattami Portfolio

Interfacce

0️⃣ Link utili

Interfaces in Java - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
https://www.geeksforgeeks.org/interfaces-in-java/

1️⃣ Interfacce in java

Interfaccia: una collezione di metodi public senza implementazione, definita da una struttura specifica in Java.

public interface I {
	public t1 m1(...);
	//...
	public t2 mn(...);
}

Sebbene simile a una class, un'interfaccia presenta differenze fondamentali:

In sintesi, un'interfaccia descrive cosa un oggetto sa fare, ma non come lo fa. Essa definisce un contratto che le classi che la implementano devono rispettare, fornendo poi l'implementazione concreta dei metodi.

📚
Nota Bene: non è possibile creare direttamente un'istanza di un'interfaccia, poiché non contiene implementazioni concrete.

Esempio, data un'interfaccia I:

I x = new I(); // -> ERRORE

Per poter utilizzare i metodi definiti in un'interfaccia, una classe deve dichiarare che la implementa, assumendosi la responsabilità di fornire le implementazioni concrete di tali metodi.

Esempio:

public class CI implements I {
	// implementazione dei metodi di I
}

Implementazione delle Interfacce

Quando una classe implementa un'interfaccia:

Esempio:

I A = new CI(); // A è un oggetto di tipo I che utilizza l'implementazione di CI

È possibile avere più implementazioni diverse della stessa interfaccia.

Esempio:

public interface I {
	public int m1(int x);
}

public class CI1 implements I {
	public int m1(int x) {
		// implementazione specifica di CI1
	}
	public void m2() {
		// un altro metodo specifico di CI1
	}
}

public class CI2 implements I {
	public int m1(int x) {
		// implementazione specifica di CI2
	}
}

// esempio di utilizzo
I A = new CI1(); // A è un oggetto di tipo I che usa l'implementazione di CI1
I B = new CI2(); // B è un oggetto di tipo I che usa l'implementazione di CI2

📚
Nota Bene: CI1CI1 e CI2CI2 sono sotto-tipi di II, quindi rispettano il principio di sostituibilità.
  • Perciò, se esiste una funzione: int f(I x) {...}
    • f(A) è valido.
    • f(B) è valido.
  • Tuttavia, se la funzione è definita come: int f(CI1 x) {...}
    • f(A) è valido.
    • f(B) non è valido.

Vantaggi delle Interfacce

Le interfacce sono strumenti fondamentali nella programmazione orientata agli oggetti per:

Tuttavia, è importante utilizzare le interfacce in modo ponderato: non tutte le classi necessitano di un'interfaccia dedicata, poiché un eccesso di interfacce può complicare inutilmente il design del software.

📑 Esercizi

esercizi risolti su classi astratte ed interfacce in Java
Esempi ed esercizi svolti su classi astratte ed interfacce in Java
https://www.edutecnica.it/informatica/abstractx/abstractx.htm

QUIZ