Classe anonima

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Classi anonime)
Jump to navigation Jump to search

Nella programmazione orientata agli oggetti una classe anonima è un costrutto di un linguaggio di programmazione che permette di dichiarare e contemporaneamente istanziare una classe[1]; è simile alla classe locale, tuttavia a differenza di quest'ultima non presenta un nome[1]. Generalmente viene utilizzata quando c'è la necessità di creare una classe locale soltanto una volta[1]. Le classi anonime forniscono la possibilità di sovrapporre i metodi di una superclasse, o di implementare i metodi di un'interfaccia, senza dover costruire una classe vera e propria. Le classi anonime hanno incluse nella loro definizione la costruzione e il primo uso della classe e si definiscono a partire da una classe o da una interfaccia preesistente.

Caratteristiche[modifica | modifica wikitesto]

Le classi anonime sono un particolare tipo di classe interna di java che possono essere definite nel corpo di un metodo. A differenza delle classi locali, le classi anonime sono delle espressioni che possono essere incluse come parte di un'espressione più ampia senza la necessità di dichiararle con un nome e la loro visibilità è limitata alla classe o al metodo nel quale sono state definite.

Considerando che una classe anonima per definizione non ha un nome, risulta formalmente impossibile definirne un costruttore; nel caso in cui la classe ne richiedesse uno, è necessario utilizzare una classe locale.

Le classi anonime non possono fare uso di membri statici (come proprietà, metodi o ulteriori classi interne) e non possono nemmeno definire interfacce interne, considerate anch'esse statiche. Le classi anonime possono usare variabili esterne alla loro visibilità solo se queste vengono dichiarate di tipo final.

Esempio di classe anonima[modifica | modifica wikitesto]

public class Calcolatrice {
	
	public int somma(int a, int b) {
		return 0;
	}

}

public class Main {

	public static void main(String[] args) {
		
		int a = 10;
		int b = 2;
		
                // Creo un oggetto "normale"
		Calcolatrice c1 = new Calcolatrice();
		int risultato1 = c1.somma(a, b);

		// Ora creo una classe anonima che
		// ridefinisce il metodo "somma"
		Calcolatrice c2 = new Calcolatrice(){
			
			public int somma(int a, int b) {
				return a+b;
			};
		};
		
		int risultato2 = c2.somma(a, b);
		
		System.out.println(risultato1); // <- STAMPA 0
		System.out.println(risultato2); // <- STAMPA 12
	}

}

Note[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica