Introduksjon til Runtime Polymorphism i Java

I denne artikkelen skal vi lære om Runtime Polymorphism i Java. “Poly” betyr “mange” og “morph” betyr “type”. Så betegnelsen polymorfisme indikerer det samme av forskjellige typer. Her vil vi se hvordan Java arkiverer polymorfisme i kjøretid, noe som betyr etter kompilering men før kjøring av koden.

syntaks:

For runtime polymorfism i Java, bør du følge den grunnleggende syntaks for java med merknader. @Override merknad kan brukes her til å spesifikt påpeke hvilken metode vi vil overstyre.

Hvordan Runtime Polymorphism fungerer i Java?

Runtime-polymorfisme fungerer i Java ved å overstyre metoden. Overstyring av metode skjer når objekter har samme metodenavn og argumenter og type som i sin overordnede klasse, men med annen funksjonalitet. Hvis en barneklasse har den typen metoder i seg, kaller vi den en overstyret metode.

Hvorfor kalles det Runtime Polymorphism?

Når vi kaller en overstyret metode for barneklasse gjennom referansen til foreldretypen (dette fenomenet i java blir referert til som "Upcasting"), angir objektets type hvilken metode eller funksjonalitet som vil bli påberopt. Ta denne avgjørelsen skjer under kjøretid av JVM etter samlingen av kode. Derfor kalles det for polymorfisme av løpetid.

Det kalles også “Dynamic method dispatch”. Grunn til å bli navngitt slik, på grunn av det faktum at funksjonaliteten til metoden dynamisk blir bestemt i kjøretid som per objekt av JVM

Det kalles også "Sen binding", fordi binding av metode og objekt, som betyr funksjonaliteten til hvilket objektets metode vil vises, blir bestemt sent, dvs. etter samlingen.

Regler og begrensninger i Runtim e Polymorphism

Nedenfor er noen av reglene og begrensningene for runtime polymorfism:

Regler for Runtime Polymorphism

  • Metoder for barn og foreldreklasse må ha samme navn.
  • Metoder for barn og foreldreklasse må ha samme parameter.
  • IS-A-forhold er obligatorisk (arv).

Begrensninger av Runtime Polymorphism

  • Man kan ikke overstyre private metoder for en foreldreklasse.
  • Man kan ikke overstyre Endelige metoder.
  • Man kan ikke overstyre statiske metoder.

Eksempler på Runtime Polymorphism i Java

Vi vil diskutere noen kodeeksempler på Run time polymorfisme her.

Eksempel 1

I dette eksemplet vil vi vise hvordan metoden showcase () viser forskjellige meldinger, avhengig av hvilken type objekt den er tilknyttet. Når det er assosiert med typen "Foreldre", viser det meldinger fra foreldreklassen. Når det er assosiert med typen "Barn", viser det meldinger fra barneklasse.

Kode:

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
)
)

Produksjon:

Eksempel 2

La oss ta et eksempel på polymorfisme av kjøretid i tilfelle arvelighet på flere nivåer. I dette eksemplet har vi tatt hensyn til to arvelighetsnivåer. I dette eksemplet vil vi vise hvordan metoden sip () viser forskjellige meldinger, avhengig av hvilken type objekt den er tilknyttet. Når det er assosiert med typen "Menneske", viser det meldinger fra en foreldreklasse. Mens den er meldt fra barneklassen når den er assosiert med typen "Mann". Igjen i det andre arvelighetsnivået, når det er assosiert med typen "Baby", viser det meldinger fra barneklassen til foreldrene som er "Mann" -klassen.

Kode:

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
)
)

Produksjon:

Eksempel 3

La oss ta et annet eksempel på polymorfisme av kjøretid i tilfelle arvelighet på flere nivåer. I dette eksemplet har vi tre nivåer av arv tas i betraktning. I dette eksemplet vil vi vise hvordan metodefunksjonen () viser forskjellige funksjoner avhengig av hvilken type objekt den er tilknyttet. Når det er assosiert med typen “operativsystem”, viser den meldinger fra en foreldreklasse. Mens det er tilknyttet “DOS” -typen, viser det meldinger fra barneklassen. Igjen i det andre arvelighetsnivået, når det er assosiert med "Windows" -typen, viser det meldinger fra barneklassen til foreldrene som er "DOS" -klassen. Igjen i det tredje arvelighetsnivået, når det er assosiert med “WindowsMobile” -typen, viser det meldinger fra barneklassen til foreldrene som er “Windows” -klassen.

Kode:

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
)
)

Produksjon:

Konklusjon

Dette avslutter læringen om emnet "Runtime Polymorphism in Java". Skriv selv kodene nevnt i eksemplene ovenfor i Java-kompilatoren og bekreft utdataene. Læring av koder vil være ufullstendig hvis du ikke skriver kode selv.

Anbefalte artikler

Dette har vært en guide til Runtime Polymorphism i Java. Her diskuterer vi hvordan Runtime Polymorphism fungerer i java med eksempler. Du kan også se på følgende artikler for å lære mer -

  1. Statisk nøkkelord i Java
  2. Overstyrer i Java
  3. Hva er polymorfisme?
  4. Rust vs Golang