Classe astratta in Java e metodi [con esempi]
Pubblicato: 2021-06-18Il seguente articolo discuterà le proprietà dell'astrazione in Java e come potrebbe essere ottenuta attraverso classi astratte e metodi astratti. Esploreremo le caratteristiche delle classi astratte e delle interfacce in java.
Sommario
Astrazione
Uno dei concetti importanti di Java è l'astrazione. È la proprietà con cui l'utente viene visualizzato solo con i dettagli importanti di un programma. Tutte le parti non essenziali vengono tenute nascoste. Il processo può essere spiegato attraverso l'esempio di un'e-mail. I mittenti inviano un'e-mail che viene consegnata al destinatario. L'unica informazione nota al mittente è che l'e-mail è stata inviata. Il processo in background di invio dell'e-mail è nascosto agli utenti. Simile è il processo nella programmazione orientata agli oggetti (OOP) in cui gli elementi essenziali vengono visualizzati all'utente mentre le parti non essenziali sono nascoste. L'utente non ha informazioni sul processo di implementazione, ma solo la funzionalità è nota. Questo meccanismo è noto come l'astrazione in cui vengono mostrate solo le caratteristiche essenziali di un oggetto ignorando le altre caratteristiche.
In Java, l'astrazione si ottiene attraverso le classi e le interfacce astratte.
Classe astratta in Java
La parola chiave "abstract" viene utilizzata per classi e metodi astratti in Java. La classe abstract ha la parola chiave abstract nella sua dichiarazione.
La sintassi di una classe astratta Java è:
classe astratta nome_classe
{
public abstract void the_abstractMethod();
public void the_normalMethod()
{
#corpo del metodo
}
}
La sintassi sopra mostra che sia i metodi normali che quelli astratti possono essere contenuti in una classe astratta.
Alcune proprietà delle classi astratte sono:
- I metodi astratti possono o non possono essere presenti nella classe astratta Java .
- La presenza di almeno un metodo astratto in una classe rende la classe una classe astratta.
- Una classe astratta non può avere alcun oggetto e quindi non può essere istanziata direttamente.
- Una classe astratta può essere utilizzata solo se è ereditata da un'altra classe e implementa i metodi astratti.
- Sono necessarie implementazioni corrette dei metodi astratti durante l'ereditarietà di una classe astratta.
- Sia i metodi regolari che quelli astratti possono essere presenti in una classe astratta Java .
- I costruttori parametrizzati possono essere presenti in una classe astratta. Inoltre, una classe astratta contiene sempre un costruttore predefinito.
Metodi astratti
I metodi astratti sono quei tipi di metodi che non richiedono l'implementazione per la sua dichiarazione. Questi metodi non hanno un corpo che significa nessuna implementazione. Alcune proprietà di un metodo astratto sono:
- Un metodo astratto in Java viene dichiarato tramite la parola chiave “abstract”.
- Mentre la dichiarazione del metodo abstract, la parola chiave abstract deve essere posta prima del nome del metodo.
- Non c'è corpo in un metodo astratto, è presente solo la firma del metodo.
- Un metodo astratto in Java non ha parentesi graffe, ma la fine del metodo avrà un punto e virgola (;)
metodo double astratto(doppio n1, doppio n2);
- Qualsiasi classe che contiene un metodo astratto dovrebbe essere dichiarata come una classe astratta. Anche se potrebbe non essere vero il contrario, cioè non è necessario che una classe astratta abbia un metodo astratto.
- L'ereditarietà di una classe astratta da parte di una classe normale richiede l'implementazione di tutti i metodi astratti nella classe genitore.
Esempio di metodo astratto
classe astratta pubblica Car
{
modello stringa privato;
colore stringa privato;
anno privato;
public abstract double computePrice();
}
Se le classi derivate non implementano i metodi astratti, risulterebbe in classi astratte che non possono essere istanziate.
Alcuni non possono essere utilizzati con la parola chiave abstract in Java.
- finale
- nativo astratto
- statico astratto
- astratto privato
- astratto sincronizzato
- rigore astratto
Di seguito è mostrato un codice che mostra l'uso di un metodo astratto in Java .
Fonte
L'output del codice è:
Interfacce Java
Oltre alle classi astratte e ai metodi astratti, Java utilizza le interfacce per ottenere l'astrazione. Quando i metodi correlati vengono raggruppati in corpi vuoti, viene chiamata interfaccia. L'interfaccia è simile a una classe astratta in quanto è il raggruppamento di metodi astratti. Quando una classe implementa l'interfaccia, tutti i metodi astratti all'interno dell'interfaccia vengono ereditati. L'interfaccia potrebbe contenere anche metodi predefiniti, costanti e metodi statici. Sono presenti i corpi dei metodi solo dei metodi predefiniti e statici. Un'eredità e una classe possono essere scritte in modo simile, ma una classe può descrivere gli attributi e il comportamento di un oggetto. Mentre nel caso di un'interfaccia sono presenti solo quei comportamenti di un oggetto, quelli sono implementati dalla classe.
Una classe deve definire tutti i metodi dell'interfaccia che implementa. Solo per una classe astratta, i metodi non devono essere definiti dalla classe.
Un'interfaccia è simile a una classe astratta Java nei seguenti modi:
- Qualsiasi numero di metodi può essere contenuto in un'interfaccia.
- L'estensione .java viene utilizzata per scrivere un'interfaccia in un file. Il nome del file deve corrispondere al nome dell'interfaccia.
- Il file .class contiene il codice byte di un'interfaccia.
- Le interfacce vengono visualizzate nei pacchetti. Il file bytecode di un'interfaccia è presente in una directory con lo stesso nome del nome del pacchetto.
Un'interfaccia è diversa da una classe astratta Java nei seguenti modi:
- Non è possibile creare un'istanza dell'interfaccia.
- Non ci sono costruttori in un'interfaccia.
- L'interfaccia contiene solo metodi astratti.
- Nessun campo di istanza è presente in un'interfaccia. Un campo deve essere dichiarato sia come statico che come finale se deve apparire in un'interfaccia.
- Solo una classe può implementare un'interfaccia, ma non può essere estesa.
- Un'interfaccia può estendere più interfacce.
Impara i corsi di software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Proprietà di un'interfaccia
- Non è necessario dichiarare un'interfaccia come astratta tramite la parola chiave abstract in quanto è implicitamente astratta.
- Le parole chiave astratte non sono necessarie per dichiarare i metodi come astratti in quanto sono implicitamente astratti.
- Tutti i metodi in un'interfaccia sono implicitamente pubblici.
Come dichiarare un'interfaccia?
La parola chiave "interfaccia" viene utilizzata per dichiarare un'interfaccia. L'astrazione totale è fornita attraverso l'uso di un'interfaccia. Per impostazione predefinita, tutti i metodi all'interno di un'interfaccia sono astratti e pubblici. Ciò significa che non c'è nessuno dei metodi in un'interfaccia e tutti i campi sono statici, pubblici e finali.
Sintassi di un'interfaccia:
Nome interfaccia_dell'interfaccia {
# dichiarare i campi
# dichiarare metodi astratti
}
Ad esempio l'interfaccia Player
{
età int finale = 40;
int calc();
}
Come implementare un'interfaccia?
Per implementare un'interfaccia viene utilizzata la parola chiave ' implementa' . Più di un'interfaccia può essere implementata da una classe. In questi casi, la parola chiave ' implementa' è seguita da un elenco di interfacce separate da una virgola. La parola chiave viene utilizzata nella dichiarazione di classe.
Di seguito è riportato un esempio di implementazione dell'interfaccia:
classe Maruti implementa Car
Di seguito è mostrato un esempio di codice che mostra l'implementazione di un'interfaccia in Java.
Fonte
Il codice genera il seguente output:
Di seguito è mostrato un codice che applica l'implementazione di più interfacce.
Fonte
Il codice genera il seguente output:
Un po' di testo...
Qualche altro testo...
Perché viene utilizzata l'interfaccia?
- Le interfacce vengono utilizzate per ottenere l'astrazione totale.
- È possibile ottenere eredità multiple in Java tramite l'uso dell'ereditarietà poiché Java non supporta eredità multiple.
- L'accoppiamento allentato può essere ottenuto mediante l'uso di un'interfaccia.
- Attraverso l'uso dell'astrazione dell'implementazione in Java è possibile ottenere.
Sebbene l'astrazione in Java possa essere ottenuta tramite la classe astratta Java, le interfacce vengono utilizzate poiché contengono variabili finali, pubbliche e statiche. Tuttavia, in una classe astratta possono essere presenti variabili non finali.
Se per ottenere l'astrazione vengono utilizzate sia l'interfaccia Java che la classe astratta Java, quando dovrebbero essere utilizzate un'interfaccia e una classe astratta?
- Una classe astratta viene utilizzata quando l'utente deve definire un modello per un gruppo di sottoclassi.
- Un'interfaccia viene utilizzata quando un utente deve definire un ruolo per altre classi.
Alcuni vantaggi dell'astrazione sono:
- La complessità del programma è ridotta.
- Ci sono minori possibilità di duplicazione del codice aumentando la riutilizzabilità.
- La sicurezza di un programma viene aumentata attraverso l'uso dell'astrazione poiché all'utente vengono forniti solo pochi dettagli.
Conclusione
L'articolo ha discusso il concetto dettagliato di astrazione in Java, che è una tecnica per nascondere all'utente informazioni non essenziali. In Java, l'astrazione si ottiene attraverso classi e interfacce astratte. Un'astrazione del 100% è fornita dalle interfacce mentre un'astrazione parziale è fornita dalle classi astratte. L'articolo ha inoltre menzionato quando utilizzare un'interfaccia e quando dovrebbe essere utilizzata una classe astratta. Ha anche elencato le somiglianze di un'interfaccia con quella della classe astratta Java e anche le differenze. Senza la necessaria conoscenza di entrambi i concetti risulterà in un codice pieno di difetti.
Se sei ulteriormente interessato a saperne di più e implementare i concetti nei problemi della vita reale, puoi dare un'occhiata al corso di Master in Informatica fornito da upGrad e IIIT-Bangalore riconosciuto dalla Liverpool John Moores University . Il corso è progettato per professionisti entry-level (21-45 anni di età) che forniscono oltre 500 ore di formazione da esperti del settore e facoltà di ingegneria del software. Ulteriori dettagli sul corso possono essere verificati sulla pagina web ufficiale di upGrad.