Introduktion till Runtime Polymorphism i Java

I den här artikeln kommer vi att lära oss om Runtime Polymorphism i Java. "Poly" betyder "många" och "morph" betyder "typ". Så termen polymorfism indikerar samma sak av olika typer. Här kommer vi att se hur Java arkiverar polymorfism i körtid, vilket betyder efter sammanställning men innan koden körs.

Syntax:

För runtime-polymorfism i Java bör du följa den grundläggande syntaxen för java med kommentarer. @Override kan användas här för att specifikt påpeka vilken metod vi vill åsidosätta.

Hur fungerar Runtime Polymorphism i Java?

Runtime-polymorfism fungerar i Java med åsidosättande av metod. Överskridande av metod sker när objekt har samma metodnamn och argument och typ som i sin överordnade klass men med olika funktioner. Om en barnklass har den typen av metod i sig, kallar vi det en åsidosatt metod.

Varför kallas det Runtime Polymorphism?

när vi kallar en åsidosatt metod för barnklass genom dess överordnade typreferens (detta fenomen i java kallas "Upcasting"), så anger typen av objektet vilken metod eller funktionalitet som kommer att åberopas. Att fatta detta beslut sker under körning av JVM efter sammanställning av kod. Därför kallas det för polymorfism av körningstid.

Det kallas också "Dynamic method dispatch". Anledning att namnges så, på grund av att metodens funktionalitet dynamiskt bestäms i körtid enligt objektet av JVM

Det kallas också "Sen bindning", eftersom bindning av metod och objekt, vilket betyder funktionaliteten för vilket objektets metod kommer att visas, beslutas sent, dvs efter sammanställningen.

Regler och begränsningar i Runtim e Polymorphism

Nedan följer några regler och begränsningar för runtime polymorfism:

Regler för Runtime-polymorfism

  • Metoder för barn- och förälderklass måste ha samma namn.
  • Metoder för barn- och förälderklass måste ha samma parameter.
  • IS-A-förhållande är obligatoriskt (arv).

Begränsningar av Runtime-polymorfism

  • Man kan inte åsidosätta privata metoder för en förälderklass.
  • Man kan inte åsidosätta de slutliga metoderna.
  • Man kan inte åsidosätta statiska metoder.

Exempel på Runtime-polymorfism i Java

Vi kommer att diskutera några kodexempel på körtidspolymorfism här.

Exempel 1

I det här exemplet kommer vi att visa hur metoden showcase () visar olika meddelanden beroende på vilken typ av objekt det är associerat med. När det är associerat med typen "Föräldrar" visar det meddelanden från föräldraklassen. När det är förknippat med typen "Barn" visar det meddelanden från barnklass.

Koda:

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

Produktion:

Exempel 2

Låt oss ta ett exempel på körtidspolymorfism i fall av arv på flera nivåer. I det här exemplet har vi beaktat två arvnivåer. I det här exemplet kommer vi att visa hur metoden sip () visar olika meddelanden beroende på vilken typ av objekt det är associerat med. När det är associerat med typen "mänsklig" visar det meddelanden från en förälderklass. Medan det är förknippat med typen "Man" visar det meddelanden från sin barnklass. Återigen i den andra arvnivån, när den är associerad med typen "Baby", visar den meddelanden från sin barnklass av sin förälder som är "Man" -klassen.

Koda:

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

Produktion:

Exempel 3

Låt oss ta ett annat exempel på polymorfism under körning i fall av arv på flera nivåer. I det här exemplet har vi tre nivåer av arv beaktas. I det här exemplet kommer vi att visa hur metodfunktionen () visar olika funktioner beroende på vilken typ av objekt den är associerad med. När det är kopplat till typen ”operativsystem” visar det meddelanden från en överordnad klass. Medan den är associerad med typen "DOS" visar den meddelanden från sin barnklass. Återigen i den andra arvnivån, när den är associerad med typen "Windows", visar den meddelanden från sin underordnade klass för sin förälder som är klass "DOS". Återigen i den tredje arvnivån, när den är associerad med typen "WindowsMobile", visar den meddelanden från sin underordnade klass för sin förälder som är "Windows" -klass.

Koda:

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

Produktion:

Slutsats

Detta avslutar vårt lärande av ämnet "Runtime Polymorphism in Java". Skriv själv de koder som nämns i exemplen ovan i java-kompilatorn och verifiera utgången. Inlärning av koder kommer att vara ofullständig om du inte skriver kod själv.

Rekommenderade artiklar

Detta har varit en guide till Runtime Polymorphism i Java. Här diskuterar vi hur Runtime Polymorphism fungerar i java med exempel. Du kan också titta på följande artiklar för att lära dig mer -

  1. Statiska nyckelord i Java
  2. Övergripande i Java
  3. Vad är polymorfism?
  4. Rust mot Golang

Kategori: