Grafico comparativo
Base per il confronto | Classe | Interfaccia |
---|---|---|
Di base | Una classe viene creata un'istanza per creare oggetti. | Un'interfaccia non può mai essere istanziata poiché i metodi non sono in grado di eseguire alcuna azione al momento del richiamo. |
Parola chiave | classe | interfaccia |
Specificatore di accesso | I membri di una classe possono essere privati, pubblici o protetti. | I membri di un'interfaccia sono sempre pubblici. |
metodi | I metodi di una classe sono definiti per eseguire un'azione specifica. | I metodi in un'interfaccia sono puramente astratti. |
Implementare / Extend | Una classe può implementare qualsiasi numero di interfaccia e può estendere solo una classe. | Un'interfaccia può estendere più interfacce ma non può implementare alcuna interfaccia. |
Costruttore | Una classe può avere costruttori per inizializzare le variabili. | Un'interfaccia non può mai avere un costruttore in quanto non vi è praticamente alcuna variabile da inizializzare. |
Definizione di Classe
Una classe è un aspetto più importante della programmazione Java senza classi non è possibile implementare un programma java. Una classe crea tipi di riferimento e questi tipi di riferimento sono usati per creare oggetti. Una classe ha una firma e un corpo. La firma di una classe ha il nome e le informazioni della classe che indicano se la classe ha ereditato un'altra classe. Il corpo di una classe ha campi e metodi che operano su quei campi. Una classe viene creata utilizzando una classe di parole chiave. Vediamo come dichiarare una classe.
class class_name {/ * fields ... metodi * /}
Quando viene creata un'istanza di una classe, ogni oggetto creato contiene una copia di campi e metodi con essi. I campi e i membri dichiarati all'interno di una classe possono essere statici o non statici. Il valore dei membri statici è costante per ciascun oggetto, mentre i membri non statici vengono inizializzati da ciascun oggetto in modo diverso in base alle proprie esigenze.
I membri di una classe dispongono di specificatori di accesso che decidono la visibilità e l'accessibilità dei membri all'utente o alle sottoclassi. Gli specificatori di accesso sono pubblici, privati e protetti. Una classe può essere ereditata da un'altra classe utilizzando l'identificatore di accesso che deciderà la visibilità dei membri di una superclasse (classe ereditata) in una sottoclasse (classe ereditaria). Quindi la classe soddisfa il concetto di nascondimento e incapsulamento dei dati nella programmazione orientata agli oggetti.
Definizione di interfaccia
Un'interfaccia è anche tra i tipi di riferimento definiti in Java. L'importanza di un'interfaccia è che in Java una classe può ereditare solo una singola classe. Per evitare questa restrizione, i progettisti di Java hanno introdotto un concetto di interfaccia. Un'interfaccia è sintatticamente simile a una classe, ma manca nella dichiarazione dei campi e i metodi all'interno di un'interfaccia non hanno alcuna implementazione. Un'interfaccia viene dichiarata utilizzando un'interfaccia per le parole chiave. Vediamo la dichiarazione di un'interfaccia.
interfaccia nome_interfaccia {tipo var_name = valore; digitare method1 (parameter-list); tipo method2 (parameter-list); . . }
Un'interfaccia non definisce alcun metodo dichiarato al suo interno perché manca nei campi su cui operare. Solo perché qualsiasi metodo all'interno di un'interfaccia non esegue alcuna azione, un'interfaccia non può mai essere istanziata. Se un'interfaccia ha un membro di campo, deve essere inizializzata al momento della dichiarazione. Un'interfaccia non contiene mai costruttori in quanto manca ai membri del campo per essere inizializzata. Quindi, un'interfaccia definisce solo ciò che una classe deve fare invece di come deve fare.
Un'interfaccia creata una volta può essere implementata da un numero qualsiasi di classi usando una parola chiave implementa . Ma le classi che implementano un'interfaccia devono definire tutti i metodi all'interno di un'interfaccia. Un'interfaccia può anche ereditare un'altra interfaccia usando la parola chiave extend . Se una classe implementa un'interfaccia che estende un'altra interfaccia. Quindi una classe deve definire i metodi di entrambe le interfacce che appaiono in una catena. I metodi all'interno di un'interfaccia devono sempre essere pubblici in quanto devono essere accessibili dalle classi che li implementano.
Differenze chiave tra classe e interfaccia in Java
- Una classe può essere istanziata creando i suoi oggetti. Un'interfaccia non viene mai istanziata poiché i metodi dichiarati all'interno di un'interfaccia sono astratti e non eseguono alcuna azione, quindi non c'è alcun uso di istanziazione di alcuna interfaccia.
- Una classe viene dichiarata utilizzando una classe di parole chiave. Allo stesso modo, un'interfaccia viene creata utilizzando un'interfaccia per le parole chiave.
- I membri di una classe possono avere lo specificatore di accesso come pubblico, privato, protetto. Ma i membri di un'interfaccia sono sempre pubblici in quanto devono essere accessibili dalle classi che li implementano.
- I metodi all'interno di una classe sono definiti per eseguire un'azione sui campi dichiarati nella classe. Mancanza di interfaccia nella dichiarazione dei campi, i metodi all'interno di un'interfaccia sono puramente astratti.
- Una classe può implementare qualsiasi numero di interfacce ma può estendere solo una super classe. Un'interfaccia può estendere qualsiasi numero di interfacce ma non può implementare alcuna interfaccia.
- Una classe ha costruttori definiti al suo interno per ottenere la variabile inizializzata. Ma un'interfaccia non ha costruttori in quanto non ci sono campi da inizializzare. I campi di un'interfaccia sono inizializzati solo al momento della loro dichiarazione.
Conclusione:
Entrambe le classi e le interfacce hanno la loro importanza. Una classe viene utilizzata quando è necessario definire la modalità di esecuzione dell'attività. Un'interfaccia viene utilizzata quando è necessario sapere quale attività deve essere eseguita.