Johdanto Runtime Polymorphism Java

Tässä artikkelissa aiomme oppia Runtime Polymorphism Java. ”Poly” tarkoittaa ”monia” ja “morph” tarkoittaa “tyyppiä”. Joten termi polymorfismi tarkoittaa samaa tyyppiä. Täällä näemme kuinka Java arkistoi polymorfismin ajoaikana, mikä tarkoittaa kokoamisen jälkeen, mutta ennen koodin suorittamista.

Syntaksi:

Suoritettua Java-polymorfismia tulee noudattaa javan perussintaksi merkinnöillä. @Override merkintää voidaan käyttää tässä osoittamaan erityisesti, mitä menetelmää haluamme ohittaa.

Kuinka Runtime Polymorphism toimii Java-ohjelmassa?

Ajonaikainen polymorfismi toimii Java-menetelmässä ohittamalla. Menetelmän ohittaminen tapahtuu, kun objekteilla on sama menetelmän nimi ja argumentit ja tyyppi kuin vanhemmalla luokalla, mutta eri toiminnallisuuksilla. Jos lapsiluokassa on tällainen menetelmä, kutsumme sitä ohitetuksi menetelmäksi.

Miksi sitä kutsutaan Runtime Polymorphism?

kun kutsumme ohitettua lasten luokkamenetelmää sen vanhemmatyyppiviittauksen kautta (java-ilmiöön viitataan nimellä "lähetys"), objektityyppi osoittaa, mihin menetelmään tai toimintoon käytetään. Tämän päätöksen tekeminen tapahtuu JVM: n suorituksen aikana koodin kokoamisen jälkeen. Siksi sitä kutsutaan juoksuajan polymorfismiksi.

Sitä kutsutaan myös ”dynaamiseksi menetelmän lähettämiseksi”. Syy on nimetty niin, koska JVM päättää menetelmän toiminnallisuudesta dynaamisesti ajon aikana objektin mukaan

Sitä kutsutaan myös ”myöhäiseksi sitomiseksi”, koska menetelmän ja objektin sitominen, mikä tarkoittaa sen objektin menetelmän toiminnallisuutta, päätetään myöhään eli kokoamisen jälkeen.

Runtim e -polymorfismin säännöt ja rajoitukset

Alla on joitain suorituksenaikaisen polymorfismin sääntöjä ja rajoituksia:

Ajonaikaisen polymorfismin säännöt

  • Lasten ja vanhempien luokan menetelmillä on oltava sama nimi.
  • Lasten ja vanhempien luokan menetelmillä on oltava sama parametri.
  • IS-suhde on pakollinen (perintö).

Suorituksenajan polymorfismin rajoitukset

  • Vanhemman luokan yksityisiä menetelmiä ei voida ohittaa.
  • Lopullisia menetelmiä ei voida ohittaa.
  • Staattisia menetelmiä ei voida ohittaa.

Esimerkkejä Java-suorituskyvyn polymorfismista

Keskustelemme tässä joitain esimerkkejä juoksuajan polymorfismista.

Esimerkki # 1

Tässä esimerkissä näytetään, kuinka menetelmäesittely () näyttää erilaisia ​​viestejä sen mukaan, minkä tyyppiseen esineeseen se liittyy. Kun se liitetään ”Vanhemmat” -tyyppiin, se näyttää vanhemman luokan viestit. Kun taas se liitetään ”Lapset” -tyyppiin, se näyttää lastenluokan viestit.

Koodi:

class Parents (
public void showcase () (
System.out.println("I am Parent");
)
)
class Children extends Parents (
@Override
public void showcase () (
System.out.println("I am Children");
)
)
public class RunTimePolymorphism (
public static void main(String args()) (
Parents superObject = new Parents();
superObject.showcase(); //method of super class or parent class is called
Parents subObject = new Children(); // upcasting
subObject.showcase();//method of sub class or child class is called by Parent reference, this is called "Run time Polymorphism"
Children subObject2 = new Children();
subObject2.showcase(); //method of sub class or child class is called
)
)

lähtö:

Esimerkki 2

Otetaanpa esimerkki juoksuajan polymorfismista monitasoisen perinnön tapauksessa. Tässä esimerkissä olemme ottaneet huomioon kaksi perintotasoa. Tässä esimerkissä osoitamme, kuinka menetelmä sip () näyttää erilaisia ​​viestejä sen mukaan, minkä tyyppiseen esineeseen se liittyy. Kun se liitetään ”Ihmisiin” -tyyppiin, se näyttää vanhemman luokan viestit. Taas kun se liitetään ”mies” -tyyppiin, se näyttää lapsiluokansa viestejä. Jälleen toisella perintotasolla, kun se liittyy ”Vauva” -tyyppiin, se näyttää viestejä vanhempansa lastenluokasta, joka on ”Mies” -luokka.

Koodi:

class Human(
void sip() (
System.out.println("Human is sipping");
)
)
class Man extends Human(
void sip()(
System.out.println("Man is sipping soup");
)
)
class Baby extends Man(
void sip()(
System.out.println("Baby is sipping milk");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
Human superObject=new Human();
Human subObject=new Man(); // // upcasting : first level of heritance
Human babyObject=new Baby(); // // upcasting : second level of heritance
superObject.sip();
subObject.sip(); //run time polymorphism happening in first level of heritance
babyObject.sip(); //run time polymorphism happening in second level of heritance
)
)

lähtö:

Esimerkki 3

Otetaan toinen esimerkki juoksuajan polymorfismista monitasoisen perinnön tapauksessa. Tässä esimerkissä meillä on kolme perintotasoa on otettu huomioon. Tässä esimerkissä näytetään, kuinka menetelmäominaisuus () näyttää erilaisia ​​ominaisuuksia sen mukaan, minkä tyyppiseen esineeseen se liittyy. Kun se liitetään ”käyttöjärjestelmä” -tyyppiin, se näyttää vanhemmaluokan viestit. Taas kun se liitetään ”DOS” -tyyppiin, se näyttää lapsiluokansa viestejä. Jälleen toisella perintotasolla, kun se yhdistetään “Windows” -tyyppiin, se näyttää viestejä vanhemmiltaan, joka on “DOS” -luokka. Jälleen kolmannella perintotasolla, kun se yhdistetään ”WindowsMobile” -tyyppiin, se näyttää vanhempiensa, jotka ovat “Windows” -luokkaa, lapsiluokat.

Koodi:

class OperatingSytem(
void feature() (
System.out.println("This is Operating Sytem");
)
)
class DOS extends OperatingSytem(
void feature()(
System.out.println("This is DOS");
)
)
class Windows extends DOS(
void feature()(
System.out.println("This is Windows");
)
)
class WindowsMobile extends Windows(
void feature()(
System.out.println("This is Windows Mobile");
)
)
public class RunTimePolymorphism (
public static void main(String args())(
OperatingSytem superObject=new OperatingSytem();
OperatingSytem subObject=new DOS(); // child object type : first level of heritance
OperatingSytem sub2Object=new Windows(); // child object type : second level of heritance
OperatingSytem sub3Object=new WindowsMobile(); // child object type : third level of heritance
superObject.feature();
subObject.feature(); //run time polymorphism happening in first level of heritance
sub2Object.feature(); //run time polymorphism happening in second level of heritance
sub3Object.feature(); //run time polymorphism happening in third level of heritance
)
)

lähtö:

johtopäätös

Tämä päättää oppimisen aiheesta ”Runtime Polymorphism in Java”. Kirjoita itsellesi yllä olevissa esimerkeissä mainitut koodit Java-kääntäjään ja tarkista tulos. Koodien oppiminen on puutteellista, jos et kirjoita koodia itse.

Suositellut artikkelit

Tämä on opas Runtime-polymorfismiin Java: ssa. Tässä keskustellaan esimerkkien avulla siitä, kuinka Runtime Polymorphism toimii javassa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Staattinen avainsana Java
  2. Ylivoimainen Java
  3. Mikä on polymorfismi?
  4. Ruoste vs. Golang