Sana polymorfismi tarkoittaa monia muotoja. Yksinkertaisesti sanottuna voimme määritellä Java-polymorfismin viestin kyvyksi näyttää useammassa kuin yhdessä muodossa. Tässä artikkelissa opimme, mikä on polymorfismi ja sen tyyppi.
Tosielämän esimerkki polymorfismista Javassa : Henkilöllä voi samanaikaisesti olla erilaisia ominaisuuksia. Kuten mies on yhtä aikaa isä, aviomies ja työntekijä. Joten samalla henkilöllä on erilainen käyttäytyminen eri tilanteissa. Tätä kutsutaan polymorfismiksi.
Mikä on polymorfismi Javassa?
Polymorfismia pidetään yhtenä olio-ohjelmoinnin tärkeistä piirteistä. Polymorfismin ansiosta voimme suorittaa yksittäisen toiminnon eri tavoin. Toisin sanoen polymorfismin avulla voit määrittää yhden käyttöliittymän ja käyttää useita toteutuksia. Sana poly tarkoittaa monia ja morfit muotoja, joten se tarkoittaa monia muotoja.
Java-polymorfismin tyypit
Javassa polymorfismi jaetaan pääasiassa kahteen tyyppiin:
cobol-ohjelmointi
- Käännösajan polymorfismi
- Ajonaikainen polymorfismi
Käännösajan polymorfismi Javassa
Se tunnetaan myös staattisena polymorfismina. Tämän tyyppinen polymorfismi saavutetaan toimintojen ylikuormituksella tai operaattorin ylikuormituksella.
Huomautus: Mutta Java ei tue operaattorin ylikuormitusta.
Menetelmän ylikuormitus
Kun on useita funktioita, joilla on sama nimi, mutta eri parametrit, näiden funktioiden sanotaan olevan ylikuormitettu . Funktiot voivat ylikuormittua argumenttien lukumäärän ja/tai argumenttien tyypin muutoksilla.
Esimerkki 1:
Java
// 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> ));> > }> }> |
>
>Lähtö
8 34.65>
Esimerkki 2:
Java
// 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> ));> > }> }> |
>
>Lähtö
python-konstruktori
8 42>
Käännösajan polymorfismin alatyypit
1. Toiminnon ylikuormitus
Se on C++:n ominaisuus, jossa useilla funktioilla voi olla sama nimi, mutta eri parametriluetteloilla. Kääntäjä päättää, mitä funktiota kutsutaan funktiolle välitettyjen argumenttien lukumäärän ja tyyppien perusteella.
2. Käyttäjän ylikuormitus
Se on C++:n ominaisuus, jossa operaattoreille, kuten +, -, * jne., voidaan antaa lisämerkityksiä, kun niitä sovelletaan käyttäjän määrittämiin tietotyyppeihin.
3. Malli
Se on tehokas ominaisuus C++:ssa, jonka avulla voimme kirjoittaa yleisiä toimintoja ja luokkia. Malli on suunnitelma funktioiden tai luokkien perheen luomiseksi.
Ajonaikainen polymorfismi Javassa
Se tunnetaan myös nimellä Dynamic Method Dispatch. Se on prosessi, jossa funktiokutsu ohitetulle menetelmälle ratkaistaan suorituksen aikana. Tämän tyyppinen polymorfismi saavutetaan Method Overriding -menetelmällä. Menetelmän ohittaminen , toisaalta tapahtuu, kun johdetulla luokalla on määritelmä yhdelle perusluokan jäsenfunktiosta. Sen perusfunktion sanotaan olevan ohitettu .
Esimerkki
Java
// 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();> > }> }> |
>
>Lähtö
subclass1 subclass2>
Selitys yllä olevalle koodille:
Tässä ohjelmassa, kun aliluokan objekti luodaan, kutsutaan aliluokan sisällä olevaa metodia. Tämä johtuu siitä, että alaluokka ohittaa yläluokan menetelmän. Koska Metodi on ohitettu, tällä menetelmällä on suurempi prioriteetti kuin emomenetelmällä aliluokan sisällä. Joten ruumis lapsiluokan sisällä teloitetaan.
Ajonaikaisen polymorfismin alatyyppi
i. Virtuaaliset toiminnot
Se sallii johdetun luokan objektin käyttäytyä ikään kuin se olisi perusluokan objekti. Johdettu luokka voi ohittaa perusluokan virtuaalisen toiminnon tarjotakseen oman toteutuksensa. Funktiokutsu ratkaistaan suorituksen aikana objektin todellisen tyypin mukaan.
Kaavio -
Javan polymorfismi on käsite, jonka avulla eri luokkiin kuuluvia objekteja voidaan käsitellä yhteisen luokan objekteina. Sen avulla objektit voivat käyttäytyä eri tavalla niiden tietyn luokkatyypin mukaan.
Polymorfismin edut Javassa
- Lisää koodin uudelleenkäytettävyyttä sallimalla eri luokkien objektien käsittelyn yhteisen luokan objekteina.
- Parantaa koodin luettavuutta ja ylläpidettävyyttä vähentämällä kirjoitettavan ja ylläpidettävän koodin määrää.
- Tukee dynaamista sidontaa, mikä mahdollistaa oikean menetelmän kutsumisen suorituksen aikana objektin todellisen luokan perusteella.
- Mahdollistaa kohteiden käsittelemisen yhtenä tyyppinä, mikä helpottaa yleisen koodin kirjoittamista, joka pystyy käsittelemään erityyppisiä objekteja.
Javan polymorfismin haitat
- Voi vaikeuttaa objektin toiminnan ymmärtämistä, varsinkin jos koodi on monimutkainen.
- Tämä voi johtaa suorituskykyongelmiin, koska polymorfinen käyttäytyminen voi vaatia lisälaskutoimituksia suorituksen aikana.