Tipi di ereditarietà in Java: singola, multipla, multilivello e ibrida

Pubblicato: 2021-06-30

introduzione

Il linguaggio di programmazione "Java" è ampiamente utilizzato nello sviluppo di applicazioni per dispositivi mobili, web, desktop, ecc. È un linguaggio di programmazione robusto, di alto livello e orientato agli oggetti sviluppato da Sun Microsystems nel 1995. Nonostante sia un linguaggio di programmazione , Java ha un'API e un ambiente di runtime (JRE) e quindi chiamato anche come piattaforma.

Ci sono diversi concetti in Java, con quattro concetti principali per entrare in possesso del linguaggio. Sono l'astrazione, l'incapsulamento, l'ereditarietà e il polimorfismo.

In questo articolo, ci concentreremo sul concetto di eredità in Java e sui tipi di eredità in java .

Cos'è l'ereditarietà?

Come suggerisce il nome, eredità significa ereditare le proprietà. Il meccanismo mediante il quale una classe può derivare le proprietà di una classe diversa è chiamato ereditarietà. Con il concetto di eredità, le informazioni in un programma possono essere organizzate gerarchicamente.

In Java, il concetto di ereditarietà consente agli utenti di creare classi e utilizzare le proprietà delle classi esistenti.

Alcune terminologie importanti associate al concetto sono:

  • Classe : è definita come un gruppo di oggetti che condividono proprietà comuni.
  • Sottoclasse : nota anche come classe derivata o estesa, questa classe eredita le caratteristiche da un'altra classe. Inoltre, insieme ai campi e ai metodi ereditati, la classe generata dalla classe può aggiungere campi e metodi propri.
  • Superclasse : la superclasse rappresenta la classe le cui caratteristiche sono ereditate da una sottoclasse.
  • Riutilizzabilità : La tecnica della riutilizzabilità consente all'utente di creare una classe (una nuova) avente i campi oi metodi di una classe già esistente. Consente di riutilizzare il codice.

Importanza dell'ereditarietà Java

L'implementazione dell'ereditarietà in Java offre i seguenti vantaggi:

  • L'ereditarietà riduce al minimo la complessità di un codice riducendo al minimo il codice duplicato. Se lo stesso codice deve essere utilizzato da un'altra classe, può essere semplicemente ereditato da quella classe alla sua sottoclasse. Quindi, il codice è meglio organizzato.
  • L'efficienza dell'esecuzione di un codice aumenta man mano che il codice è organizzato in una forma più semplice.
  • Il concetto di polimorfismo può essere utilizzato insieme all'ereditarietà.

Sintassi

La sintassi di base è

Classe superclasse {

—————-

}

classe sottoclasse estende la superclasse

{

————–

—————–

}

La parola chiave "estende" viene utilizzata durante l'ereditarietà di una classe. Definisce che la funzionalità della superclasse viene estesa alla sottoclasse.

La nuova classe creata viene chiamata sottoclasse mentre la classe ereditata viene definita classe genitore.

Figura 1: Di seguito viene mostrato un esempio di codice che applica l'ereditarietà java

Fonte

Nell'esempio precedente vengono create due classi Calculation e My_Calculation. I metodi addizione() e Sottrazione() vengono ereditati dal calcolo della classe in My_Calculation. Keyword extends è stato utilizzato per ereditare i metodi.

La compilazione e l'esecuzione del codice precedente danno il seguente output.

Figura 2: l'output del codice in Figura 1

Fonte

La creazione della classe My_Calculation copia il contenuto della superclasse nella sottoclasse. Con gli oggetti della sottoclasse, gli utenti possono accedere al membro della sottoclasse.

In alcuni casi in cui dobbiamo distinguere tra i membri della sottoclasse e quello della superclasse con lo stesso nome, viene utilizzata la parola chiave “super”. Se presumibilmente abbiamo due classi Sub_class e Super_class con lo stesso metodo, ad esempio display(). L'implementazione del metodo è diversa ma ha lo stesso nome. In tal caso, per differenziare il metodo superclasse da quello della sottoclasse, è necessario utilizzare la parola chiave super.

Tipi di ereditarietà Java

I diversi tipi di eredità si osservano in Java:

1. Ereditarietà a livello singolo

Come suggerisce il nome, questo tipo di eredità si verifica solo per una singola classe. Solo una classe è derivata dalla classe padre. Il diagramma di flusso di una singola eredità è mostrato di seguito:

Figura 3: Illustrazione grafica dell'ereditarietà a livello singolo

Fonte

Nella Figura 3 sono mostrate due classi Classe A e Classe B , dove la Classe B eredita le proprietà della Classe A.

Figura 4 : un esempio di codice che applica l'ereditarietà a livello singolo

Fonte

2. Ereditarietà multilivello

L'eredità multilivello prevede il coinvolgimento di almeno due o più di due classi. Una classe eredita le funzionalità da una classe padre e la sottoclasse appena creata diventa la classe base per un'altra nuova classe.

Figura 5: un diagramma di flusso dell'ereditarietà multilivello

Fonte

Dal diagramma di flusso in Figura 5 , possiamo osservare che la Classe B è una classe derivata dalla Classe A, e la Classe C è ulteriormente derivata dalla Classe B. Pertanto il concetto di classe dei nonni nasce nell'ereditarietà multilivello. Tuttavia, non è possibile accedere direttamente ai membri della classe di un nonno in Java.

Pertanto, la Figura 5 mostra che la Classe C sta ereditando i metodi e le proprietà sia della Classe A che della Classe B.

Di seguito viene mostrato un esempio di ereditarietà multilivello con tre classi X, Y e Z. La classe Y deriva dalla classe X che crea ulteriormente la classe Z.

Figura 6: un esempio di eredità multilivello

Fonte

3. Ereditarietà gerarchica

Il tipo di eredità in cui molte sottoclassi ereditano da una singola classe è noto come ereditarietà gerarchica.

Figura 7: Rappresentazione grafica di un'eredità gerarchica.

Nella Figura 7 , possiamo osservare che le tre classi Classe B, Classe C e Classe D sono ereditate dalla singola Classe A. Tutte le classi figlie hanno la stessa classe padre nell'ereditarietà gerarchica.

Figura 8: un esempio di codice che mostra il concetto di ereditarietà gerarchica

Fonte

Il codice sopra produce l'output

miagolando…

mangiare...

Oltre a questi tipi di eredità in Java , esistono altri tipi noti come eredità multiple e eredità ibrida. Entrambi i tipi non sono supportati tramite le classi e possono essere raggiunti solo tramite l'uso di interfacce.

4. Ereditarietà multipla

L'ereditarietà multipla è un tipo di eredità in cui una sottoclasse può ereditare caratteristiche da più di una classe padre.

Figura 9: Rappresentazione di eredità multiple

Fonte

La Figura 4 mostra che la Classe C è derivata dalle due classi Classe A e Classe B. In altre parole si può descrivere che la sottoclasse C eredita proprietà sia dalla Classe A che dalla Classe B.

5. Ereditarietà ibrida

L'ereditarietà ibrida è un tipo di eredità che combina eredità singola e eredità multiple. Poiché l'ereditarietà multipla non è supportata da Java, l'ereditarietà ibrida può essere ottenuta anche solo tramite interfacce.

Figura 10: Rappresentazione di un'eredità ibrida

Fonte

Con i diversi tipi di eredità in Java, l'obiettivo finale è creare sottoclassi con proprietà ereditate dalle superclassi. Le sottoclassi create hanno varie proprietà che sono:

  • I campi ei metodi ereditati in una sottoclasse possono essere utilizzati direttamente.
  • Nuovi campi e metodi possono anche essere dichiarati nella sottoclasse che non è presente nella superclasse.
  • È possibile creare un nuovo metodo di istanza nella sottoclasse con la stessa firma del metodo nella superclasse. Il processo è denominato override.
  • È possibile creare un nuovo metodo statico nella sottoclasse con la stessa firma del metodo nella superclasse. Il processo è indicato come nascondersi.

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.

Conclusione

L'articolo ha discusso l'importante concetto di eredità in Java ei tipi di eredità in Java . L'ereditarietà è quindi il meccanismo attraverso il quale possiamo riutilizzare i codici per acquisire le proprietà di una classe in un'altra classe. Ciò può essere ottenuto attraverso i diversi tipi di modelli di eredità come mostrato nell'articolo. Tuttavia, c'è molto di più nel concetto di eredità. Per eccellere nel campo dello sviluppo, è richiesta la padronanza della complessa programmazione di Java. Se sogni di innovare i dispositivi intelligenti, allora il programma Executive PG in Full-stack Software Development offerto da upGrad's sarebbe la scelta migliore. Certificato dalla Liverpool John Moores University , il corso in associazione con IIIT Bangalore offre oltre 500 ore di apprendimento ed è progettato per i primi professionisti. L'abilità appresa dal corso upGrad aiuterà ad aprire opportunità nel campo dello sviluppo di software, sviluppo web, sviluppatore javascript, ecc. Aperto a qualsiasi genere all'interno della fascia di età 21-45, il programma interattivo potrebbe essere la scelta migliore per tutti i programmatori.

Cos'è l'eredità?

L'ereditarietà è un processo mediante il quale un nuovo oggetto acquisisce le proprietà dell'oggetto precedente. Ad esempio, puoi considerare una classe 'umana'. Potrebbero esserci molte proprietà degli umani che vuoi includere nella tua classe come altezza, peso, ecc. Quindi, un modo per farlo è definire nuovamente tutte quelle proprietà nella tua classe. Potrebbe essere un buon modo per imparare la programmazione orientata agli oggetti, ma non è una buona pratica. Il modo migliore per farlo è ereditare tutte quelle proprietà da una particolare classe. La classe 'figlio' può ereditare tutte le proprietà della classe 'umano' (o 'genitore'). Questo è chiamato ereditarietà nella programmazione orientata agli oggetti.

Che cos'è la programmazione orientata agli oggetti?

Che cos'è l'ereditarietà multipla?