Polimorfismo in Java

Il polimorfismo in Java è un concetto con cui possiamo eseguire una singola azione in modi diversi. Il polimorfismo deriva da 2 parole greche: poly e morphs. La parola “poly” significa molti e “morphs” significa forme. Quindi polimorfismo significa molte forme.

Ci sono due tipi di polimorfismo in Java: polimorfismo compile-time e polimorfismo runtime. Possiamo eseguire il polimorfismo in Java tramite l’overloading del metodo e l’overriding del metodo.

Se si sovraccarica un metodo statico in Java, è un esempio di polimorfismo a tempo di compilazione. Qui ci concentreremo sul polimorfismo runtime in Java.

Polimorfismo runtime in Java

Il polimorfismo runtime o Dynamic Method Dispatch è un processo in cui una chiamata a un metodo sovrascritto è risolta in runtime piuttosto che in compile-time.

In questo processo, un metodo sovrascritto è chiamato attraverso la variabile di riferimento di una superclasse. La determinazione del metodo da chiamare si basa sull’oggetto a cui fa riferimento la variabile di riferimento.

Comprendiamo innanzitutto l’upcasting prima del polimorfismo di runtime.

Upcasting

Se la variabile di riferimento della classe Parent si riferisce all’oggetto della classe Child, si parla di upcasting. Per esempio:

Upcasting in Java

Per l’upcasting, possiamo usare la variabile di riferimento di tipo classe o di tipo interfaccia. Per esempio:

Qui, la relazione della classe B sarebbe:

B IS-A AB IS-A IB IS-A Object

Siccome Object è la classe radice di tutte le classi in Java, così possiamo scrivere B IS-A Object.

Esempio di polimorfismo runtime Java

In questo esempio, stiamo creando due classi Bike e Splendor. La classe Splendor estende la classe Bike e sovrascrive il suo metodo run(). Stiamo chiamando il metodo run dalla variabile di riferimento della classe Parent. Siccome si riferisce all’oggetto della sottoclasse e il metodo della sottoclasse sovrascrive il metodo della classe Genitore, il metodo della sottoclasse viene invocato a runtime.

Poiché l’invocazione del metodo è determinata dalla JVM e non dal compilatore, è noto come polimorfismo runtime.

Testalo ora

Output:

running safely with 60km.

Esempio di polimorfismo runtime Java: Banca

Considera uno scenario in cui Banca è una classe che fornisce un metodo per ottenere il tasso di interesse. Tuttavia, il tasso di interesse può essere diverso a seconda delle banche. Per esempio, le banche SBI, ICICI e AXIS forniscono un tasso di interesse dell’8,4%, 7,3% e 9,7%.

Esempio di polimorfismo Java Runtime di banca

Nota: Questo esempio è dato anche nell’override del metodo ma non c’è stato upcasting.

Prova ora

Output:

SBI Rate of Interest: 8.4ICICI Rate of Interest: 7.3AXIS Rate of Interest: 9.7

Esempio di polimorfismo Java Runtime: Shape

Testalo ora

Output:

drawing rectangle...drawing circle...drawing triangle...

Java Runtime Polymorphism Example: Animal

Test it Now

Output:

eating bread...eating rat...eating meat...

Java Runtime Polymorphism with Data Member

Un metodo viene sovrascritto, non i membri dei dati, quindi il polimorfismo runtime non può essere raggiunto dai membri dei dati. Stiamo accedendo al membro di dati tramite la variabile di riferimento della classe Parent che si riferisce all’oggetto della sottoclasse. Poiché stiamo accedendo al membro di dati che non è sovrascritto, quindi accederà sempre al membro di dati della classe Genitore.

Regola: Il polimorfismo di runtime non può essere raggiunto dai membri dati.

Testalo ora

Output:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *