Polimorfisms Java OOP ar piemēru: Kas ir, dinamisks

Kas ir polimorfisms Java?

Polimorfisms Java notiek, ja ir viena vai vairākas klases vai objekti, kas ir saistīti viens ar otru pēc mantojuma. Tā ir objekta spēja izpausties dažādos veidos. Mantojums ļauj lietotājiem mantot atribūtus un metodes, un polimorfisms izmanto šīs metodes dažādu uzdevumu veikšanai. Tātad, mērķis ir komunikācija, bet pieeja ir atšķirīga.

Piemēram, jums ir viedtālrunis saziņai. Jūsu izvēlētais saziņas režīms var būt jebkas. Tas var būt zvans, īsziņa, multiziņa, pasts utt. Tātad kopīgs mērķis ir komunikācija, bet viņu pieeja ir atšķirīga. To sauc Polimorfisms. Tagad mēs ar piemēru apgūsim polimorfismu Java valodā.

Šajā Java apmācībā jūs uzzināsit-


Noklikšķiniet šeit, ja videoklips nav pieejams



Java polimorfisms OOP ar piemēru

Mums ir viena vecāku klase “Konts” ar depozīta un izņemšanas funkciju. Kontā ir 2 bērnu klases

Depozīta un izņemšanas darbība ir vienāda krājkontiem un čekiem. Tātad mantotās metodes no konta klases darbosies.

Java polimorfisma piemērs

Izmaiņas programmatūras prasībā

Ir izmaiņas prasību specifikācijās, kas ir tik izplatīta programmatūras nozarē. Jums ir jāpievieno funkcionalitātes priviliģēts bankas konts ar overdrafta iespēju.

Piemēram, overdrafts ir iespēja, kurā varat izņemt summu, kas pārsniedz jūsu konta atlikumu.

Tātad atceliet metodi priviliģētām vajadzībām, lai tā tiktu ieviesta no jauna. Bet jūs nemaināt pārbaudīto koda daļu krājkontā. Šī ir OOPS priekšrocība

1. darbība) Tāda, ka tad, kad “izņemto” metodi konta saglabāšanai sauc par metodi no vecāku konta klases, tiek izpildīta.

2. darbība) Bet, ja priviliģētā konta (overdrafta iespējas) izņemšanas metodi sauc par izņemšanas metodi, kas definēta priviliģētajā klasē, tiek izpildīta. Tas ir Polimorfisms OOP.

Metodes ignorēšana Java

Metodes ignorēšana ir superklases metodes definēšana apakšklasē.

Metodes ignorēšanas noteikumi

  • Metodes parakstam, ti, metodes nosaukumam, parametru sarakstam un atgriešanas veidam ir precīzi jāatbilst.
  • Parakstītā metode var paplašināt pieejamību, bet ne to sašaurināt, t.i., ja tā ir privāta pamata klasē, bērnu klase to var publiskot, bet ne otrādi.

Piemērs super

Atšķirība starp pārslodzi un ignorēšanu

Metodes pārslodze Metodes ignorēšana

Metodes pārslodze ir vienā klasē, kur vairākām metodēm ir vienāds nosaukums, bet atšķirīgi paraksti.

Metodes ignorēšana ir tad, ja viena no superklases metodēm ir no jauna definēta apakšklasē. Šajā gadījumā metodes paraksts paliek nemainīgs.

Bijušais:

 class Doctor{ public void treatPatient(){ // treatPatient method } class Surgeon extends Doctor{ public void treatPatient(){ // treatPatient method } } Class run{ public static void main (String args[]){ Doctor doctorObj = new Doctor() // treatPatient method in class Doctor will be executed doctorObj.treatPatient(); Surgeon surgeonObj = new Surgeon(); // treatPatient method in class Surgeon will be executed surgeonObj.treatPatient(); } } 

Bijušais:

 void sum (int a , int b); void sum (int a , int b, int c); void sum (float a, double b); 

Kas ir dinamiskais polimorfisms?

Dinamiskais polimorfisms OOP ir mehānisms, ar kuru var noteikt vairākas metodes ar tādu pašu nosaukumu un parakstu virsklasē un apakšklasē. Izsaukums uz ignorēto metodi tiek atrisināts izpildes laikā.

Dinamiskā polimorfisma piemērs:

Superklases atsauces mainīgais var attiekties uz apakšklases objektu | _+_ |

Apsveriet apgalvojumu | _+_ |

Šeit atsauces mainīgais “obj” ir vecāku klase, bet objekts, uz kuru tas norāda, ir bērnu klase (kā parādīts zemāk esošajā polimorfisma diagrammas piemērā).


obj.treatPatient () izpildīs apakšklases metodi treatPatient () - ķirurgs

Ja metodes izsaukšanai tiek izmantota bāzes klases atsauce, atsauces metodi nosaka JVM, atkarībā no objekta, uz kuru atsauce norāda

Piemēram, lai gan obj ir atsauce uz ārstu, tā sauc ķirurga metodi, jo tā norāda uz ķirurga objektu

Tas tiek nolemts izpildes laikā un tāpēc tiek saukts dinamisks vai izpildlaika polimorfisms

Atšķirība starp statisko un dinamisko polimorfismu

Statiskais polimorfisms Java ir polimorfisma veids, kas apkopo informāciju metodes izsaukšanai apkopošanas laikā, turpretī dinamiskais polimorfisms ir polimorfisma veids, kas apkopo informāciju metodes izsaukšanai izpildes laikā.

Statiskais polimorfisms Dinamiskais polimorfisms
Tas attiecas uz metodes pārslodzi. Tas attiecas uz metodes ignorēšanu.

Kļūdas, ja tādas ir, tiek novērstas apkopošanas laikā. Tā kā kompilēšanas laikā kods netiek izpildīts, tāpēc nosaukums ir statisks.

Bijušais:

 class X{ public int sum(){ // some code } } class Y extends X{ public int sum(){ //overridden method //signature is same } } 

Ja atsauces mainīgais izsauc ignorējamu metodi, izsaucamo metodi nosaka objekts, uz kuru atsauces mainīgais norāda. To var noteikt tikai izpildlaika laikā, kad kods tiek izpildīts, tāpēc nosaukums ir dinamisks.

Bijušais:

 Doctor obj = new Surgeon(); 

Super atslēgvārds Java

Ko darīt, ja ārstniecības klases metode Surgeon vēlas izpildīt ārsta klasē definēto funkcionalitāti un pēc tam veikt savu īpašo funkcionalitāti?

Šajā gadījumā atslēgvārdu | _+_ | var izmantot, lai piekļūtu vecāku klases metodēm no bērnu klases.

TreatPatient metodi ķirurga klasē varētu uzrakstīt šādi: | _+_ |

Atslēgvārdu super var izmantot, lai piekļūtu jebkuram apakšklases superklases datu loceklim vai metodēm.

Tālāk mēs ar paraugprogrammām uzzināsim par super atslēgvārdu, mantojumu un polimorfismu Java.

Piemērs: -Mācīties mantojumu, polimorfismu un super atslēgvārdu

1. darbība) Kopējiet redaktorā šādu kodu | _+_ |

2. darbība) Saglabājiet, apkopojiet un palaidiet kodu. Ievērojiet izvadi.

3. darbība) Nav komentāru 6.-9. Rindā. Saglabājiet, apkopojiet un palaidiet kodu. Ievērojiet izvadi.

4. darbība) 10. komentāra rindiņa. Saglabājiet un apkopojiet kodu.

5. darbība) Kļūda =? Tas notiek tāpēc, ka apakšklase nevar piekļūt privātiem superklases pārstāvjiem.

Kopsavilkums

  • Polimorfisms objektorientētā programmēšanā rodas, ja ir viena vai vairākas klases vai objekti, kas ir saistīti viens ar otru pēc mantojuma. Tā ir objekta spēja izpausties dažādos veidos.
  • Metodes ignorēšana ir superklases metodes definēšana apakšklasē.
  • Dinamiskais polimorfisms Java ir mehānisms, ar kuru var noteikt vairākas metodes ar tādu pašu nosaukumu un parakstu virsklasē un apakšklasē.
  • Statiskais polimorfisms Java ir polimorfisma veids, kas apkopo informāciju metodes izsaukšanai apkopošanas laikā, turpretī dinamiskais polimorfisms ir polimorfisma veids, kas apkopo informāciju metodes izsaukšanai izpildes laikā.
  • Super atslēgvārdu var izmantot, lai piekļūtu vecāku klases metodēm no bērnu klases.