logo

Polimorfismo in Java

La parola polimorfismo significa avere molte forme. In parole semplici, possiamo definire il polimorfismo Java come la capacità di un messaggio di essere visualizzato in più di una forma. In questo articolo impareremo cos'è il polimorfismo e il suo tipo.

Illustrazione nella vita reale del polimorfismo in Java : Una persona allo stesso tempo può avere caratteristiche diverse. Come un uomo è allo stesso tempo padre, marito e dipendente. Quindi la stessa persona possiede comportamenti diversi in situazioni diverse. Questo si chiama polimorfismo.

Cos'è il polimorfismo in Java?

Il polimorfismo è considerato una delle caratteristiche importanti della programmazione orientata agli oggetti. Il polimorfismo ci consente di eseguire una singola azione in modi diversi. In altre parole, il polimorfismo consente di definire un'interfaccia e avere più implementazioni. La parola poly significa molti e morph significa forme, quindi significa molte forme.



ottieni la lunghezza dell'array in c

Tipi di polimorfismo Java

In Java il polimorfismo si divide principalmente in due tipologie:

  • Polimorfismo in fase di compilazione
  • Polimorfismo di runtime

Polimorfismo in fase di compilazione in Java

È noto anche come polimorfismo statico. Questo tipo di polimorfismo si ottiene mediante sovraccarico della funzione o sovraccarico dell'operatore.

Nota: Ma Java non supporta l'Operator Overloading.

Polimorfismo di Java

Sovraccarico del metodo

Quando sono presenti più funzioni con lo stesso nome ma parametri diversi, si dice che queste funzioni siano sovraccarico . Le funzioni possono essere sovraccaricate da modifiche nel numero di argomenti e/o da una modifica nel tipo di argomenti.

Esempio 1:

Giava




// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }>

>

coppia C++
>

Produzione

8 34.65>

Esempio 2:

Giava




// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }>

>

percorso impostato in Java
>

Produzione

8 42>

Sottotipi di polimorfismo in fase di compilazione

1. Sovraccarico delle funzioni

È una funzionalità del C++ in cui più funzioni possono avere lo stesso nome ma con elenchi di parametri diversi. Il compilatore deciderà quale funzione chiamare in base al numero e al tipo di argomenti passati alla funzione.

2. Sovraccarico dell'operatore

È una funzionalità del C++ in cui agli operatori come +, -, * e così via è possibile assegnare significati aggiuntivi se applicati a tipi di dati definiti dall'utente.

3. Modello

è una potente funzionalità del C++ che ci consente di scrivere funzioni e classi generiche. Un modello è un modello per la creazione di una famiglia di funzioni o classi.

Polimorfismo runtime in Java

È noto anche come Invio del metodo dinamico. È un processo in cui una chiamata di funzione al metodo sovrascritto viene risolta in fase di runtime. Questo tipo di polimorfismo si ottiene tramite Method Overriding. Metodo prioritario , d'altro canto, si verifica quando una classe derivata ha una definizione per una delle funzioni membro della classe base. Si dice che quella funzione di base sia sovrascritto .

Esempio

Giava




// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }>

>

dimensioni del testo in lattice

>

Produzione

subclass1 subclass2>

Spiegazione del codice sopra:

Qui in questo programma, quando viene creato un oggetto di una classe figlia, viene chiamato il metodo all'interno della classe figlia. Questo perché il metodo nella classe genitore viene sovrascritto dalla classe figlio. Poiché il metodo viene sovrascritto, questo metodo ha più priorità rispetto al metodo genitore all'interno della classe figlio. Quindi, viene eseguito il corpo all'interno della classe figlia.

Sottotipo di polimorfismo in fase di esecuzione

io. Funzioni virtuali

Consente a un oggetto di una classe derivata di comportarsi come se fosse un oggetto della classe base. La classe derivata può sovrascrivere la funzione virtuale della classe base per fornire la propria implementazione. La chiamata di funzione viene risolta in fase di esecuzione, a seconda del tipo effettivo dell'oggetto.

Diagramma –

Tipi di polimorfismo in Java

Il polimorfismo in Java è un concetto che consente di trattare oggetti di classi diverse come oggetti di una classe comune. Consente agli oggetti di comportarsi in modo diverso in base al tipo di classe specifico.

Vantaggi del polimorfismo in Java

  1. Aumenta la riusabilità del codice consentendo di trattare oggetti di classi diverse come oggetti di una classe comune.
  2. Migliora la leggibilità e la manutenibilità del codice riducendo la quantità di codice che deve essere scritto e gestito.
  3. Supporta l'associazione dinamica, consentendo di chiamare il metodo corretto in fase di esecuzione, in base alla classe effettiva dell'oggetto.
  4. Consente di trattare gli oggetti come un unico tipo, semplificando la scrittura di codice generico in grado di gestire oggetti di tipi diversi.

Svantaggi del polimorfismo in Java

  1. Può rendere più difficile comprendere il comportamento di un oggetto, soprattutto se il codice è complesso.
  2. Ciò potrebbe portare a problemi di prestazioni, poiché il comportamento polimorfico potrebbe richiedere calcoli aggiuntivi in ​​fase di esecuzione.