Uvod v polimorfizem izvajanja na Javi

V tem članku bomo spoznali Polimorfizem Runtime na Javi. „Poly“ pomeni „mnogo“, „morph“ pa pomeni „tip“. Torej izraz polimorfizem označuje isto stvar različnih vrst. Tu bomo videli, kako Java arhivira polimorfizem v času izvajanja, kar pomeni po prevajanju, vendar pred izvajanjem kode.

Sintaksa:

Če želite izvajati polimorfizem na Javi, morate slediti osnovni sintaksi jave s pripisi. @Override lahko tukaj uporabimo za natančneje poudarjanje, katero metodo želimo preglasiti.

Kako deluje polimorfizem izvajanja na Javi?

Polimorfizem izvajanja deluje na Javi s prevladovanjem metode. Prevladovanje metode se zgodi, kadar imajo predmeti isto ime in argumente in tip metode kot njegov nadrejeni razred, vendar z drugačno funkcionalnostjo. Če ima otrok razred te vrste metode, ga imenujemo prenarejena metoda.

Zakaj se imenuje Polimorfizem Runtime?

ko prekličemo metodo nadrejenega razreda nadrejenega razreda (ta pojav v javi imenujemo "posodobitev"), potem tip predmeta kaže, kateri način ali funkcionalnost se bosta priklicala. Ta odločitev se zgodi med izvajanjem JVM po sestavljanju kode. Zato se imenuje polimorfizem Run time.

Imenuje se tudi kot "dinamična odpremna metoda". Obrazložitev je tako imenovana zaradi dejstva, da se funkcionalnost metode v času izvajanja dinamično določa glede na objekt JVM

Imenujemo ga tudi „pozno vezava“, ker se za vezavo metode in predmeta, kar pomeni funkcionalnost metode predmeta, ki bo prikazana, odloči pozno, tj. Po prevajanju.

Pravila in omejitve v Runtim e polimorfizmu

Spodaj je nekaj pravil in omejitev polimorfizma izvajanja:

Pravila polimorfizma izvajanja

  • Metode otroškega in starševskega razreda morajo imeti isto ime.
  • Metode otroškega in starševskega razreda morajo imeti enak parameter.
  • Razmerje IS-A je obvezno (dedovanje).

Omejitve polimorfizma izvajanja

  • Zasebnih metod nadrejenega razreda ni mogoče preglasiti.
  • Končnih metod ni mogoče preglasiti.
  • Ne moremo preglasiti statičnih metod.

Primeri polimorfizma izvajanja na Javi

Tu bomo obravnavali nekaj kodnih primerov polimorfizma Run time.

Primer # 1

V tem primeru bomo pokazali, kako metoda showcase () prikazuje različna sporočila, odvisno od tega, s kakšnim tipom predmeta je povezana. Ko je povezan s tipom "Starši", prikazuje sporočila iz nadrejenega razreda. Ko je povezana z vrsto "Otroci", prikazuje sporočila iz otroškega razreda.

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

Izhod:

Primer # 2

Vzemimo primer polimorfizma tekaškega časa v primeru dedovanja na več ravneh. V tem primeru smo upoštevali dve stopnji dedovanja. V tem primeru bomo pokazali, kako metoda sip () prikazuje različna sporočila, odvisno od tega, s kakšnim tipom predmeta je povezana. Ko je povezan s tipom "Human", prikazuje sporočila iz nadrejenega razreda. Ko je povezana s tipom "Man", prikazuje sporočila iz svojega otroškega razreda. Na drugi stopnji dedovanja, ko je povezana s tipom "Baby", prikazuje sporočila iz svojega otroškega razreda svojega starša, ki je razred "Man".

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

Izhod:

Primer # 3

Vzemimo še en primer polimorfizma tekaškega časa v primeru dedovanja na več ravneh. V tem primeru imamo upoštevane tri stopnje dednosti. V tem primeru bomo pokazali, kako funkcija () prikazuje različne lastnosti, odvisno od tega, s kakšnim tipom predmeta je povezana. Ko je povezan z vrsto "operacijski sistem", prikazuje sporočila iz nadrejenega razreda. Ko je povezana s tipom "DOS", prikazuje sporočila iz svojega otroškega razreda. Na drugi stopnji dedovanja, ko je povezana z vrsto Windows, prikazuje sporočila iz svojega nadrejenega razreda nadrejenega, ki je razred "DOS". Na tretji stopnji dedovanja, ko je povezana z vrsto "WindowsMobile", prikazuje sporočila iz svojega nadrejenega razreda nadrejenega, ki je razred "Windows".

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

Izhod:

Zaključek

S tem se zaključuje naše učenje teme "Polimorfizem izvajanja na Javi". Zapišite si kode, omenjene v zgornjih primerih, v prevajalnik java in preverite izhod. Učenje kod bo nepopolno, če kode ne boste napisali sami.

Priporočeni članki

To je vodnik za polimorfizem Runtime na Javi. Tukaj razpravljamo o tem, kako polimorfizem Runtime deluje v javi s primeri. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Statična ključna beseda v Javi
  2. Prevladovanje v Javi
  3. Kaj je polimorfizem?
  4. Rust proti Golangu