differenze tra classe astratta e interfaccia

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Non riesco a comprendere che differenza ci sia a livello pratico... qualcuno mi potrebbe aiutare?
 
La classe astratta viene usata nel caso in cui hai dei metodi che devono essere ridefiniti, mentre altri sono sempre gli stessi. Un esempio potrebbe essere la classe per la connessione a diversi tipi di database. Si crea una classe di base astratta che contiene tutti i metodi per la connessione e l'esecuzione di query, eccetera, però si implementa comunque il metodo che visualizza un errore, che sarà uguale per tutti i database. Una classe astratta può comunque essere definita "una classe".

Un'interfaccia invece non è un'interfaccia, è come lo scheletro di una classe. Tutti i metodi di un'interfaccia devono essere necessariamente ridefiniti. Non è una classe, ma un costrutto a sé stante.
 
da Wikipedia:
In informatica si dice classe astratta una classe che definisce una interfaccia senza implementarla completamente. Ciò serve come base di partenza per generare una o più classi specializzate aventi tutte la stessa interfaccia di base. Queste potranno poi essere utilizzate indifferentemente da applicazioni che conoscono l'interfaccia base della classe astratta, senza sapere niente delle specializzate.

Nella programmazione, in particolare in quella orientata agli oggetti, l'interfaccia di una classe è formata dall'insieme dei dati e dei metodi visibili all'esterno di un oggetto. Nel linguaggio Java le interfacce possono contenere esclusivamente metodi con visibilità pubblica e campi statici e final.
 
Quindi facendo un esempio pratico:

Per calcolare l'area di una certa forma (che questa sia un cerchio, un quadrato, un rettangolo....) utilizzo un'interfaccia. La quale sarà implementata con classi cerchio, quadrato, rettangolo... le quali contengono vari metodi ma hanno tutti la stessa struttura.

Mentre se quello che devo calcolare è solo ed unicamente l'area di un quadrato utilizzo una classe astratta


Giusto?
 
Ultima modifica:
Mah, se devi calcolare solo l'area di un quadrato basta che crei una classe normale. Ribadisco quello che ho detto: l'interfaccia rappresenta solo i profili dei metodi. La classe astratta, invece, è sempre una classe normale, però alcuni metodi devono essere implementati. Io uso le classi astratte quando solo alcuni metodi devono essere modificati.
 
Ho capito; quindi la cosa più interessante è rappresentata dall'interfaccia... che costituisce la vera "portanza"; mentre la classe astratta è utile per il semplice fatto che i metodi astratti devono essere eseguiti nelle sottoclassi.
 

Discussioni simili