Typer polymorfisme i Java | Forklart

Typer polymorfisme i Java | Forklart
Polymorfisme er en evne som lar et objekt bære mange former eller med enkle ord det lar oss lage å utføre en enkelt oppgave på forskjellige måter. For eksempel lar polymorfisme oss lage flere metoder med samme navn, men implementeringen av hver metode vil være forskjellig fra den andre metoden. I Java kan begrepet polymorfisme implementeres i kjøretid eller i kompileringstid.

Denne oppskrivningen presenterer en grundig oversikt over typer polymorfisme som listet nedenfor:

  • Hva er polymorfisme i Java
  • Statisk/kompilert-tid polymorfisme i Java
  • Dynamisk/runtime polymorfisme i java

Så la oss komme i gang!

Hva er polymorfisme i Java

Ordet polymorfisme er en kombinasjon av to greske ord Poly betyr mange og morphs betyr former derfor kombinert ordet Polymorfisme midler mange/flere former. Polymorfisme lar oss utføre en spesifikk oppgave på forskjellige måter

Eksempel

La oss vurdere de nedenfor listede eksempler i den virkelige verden for å forstå begrepet polymorfisme:

Dyr lyder: Løve brøler, hundebjeffer, heste naboer og så videre.

La oss nå forstå det ovennevnte konseptet når det gjelder Java-programmering, i dette eksemplet Dyr er en klasse, og “Lyder ()” er metoden:

Her Dyr er en generell klasse som ikke kan begrenses med bare en lyd som et brøl, bark osv. Så en klasse vil ha en generisk implementering som kan utvides med de andre klassene.

Dessuten, Løve, Hund, og Hest (underklasser) kan utvide egenskapene til foreldreklassen Dyr. Barneklassene vil arve funksjonen til foreldreklassen og kan overstyre implementeringen av denne funksjonen.

Så polymorfismen i Java lar deg bruke den samme metoden for å utføre forskjellige funksjonaliteter. I Java kan polymorfisme oppnås ved hjelp av kompileringstid eller kjøretid.

Statisk/kompilert-tid polymorfisme i Java

I polymorfisme av kompileringstid er objektene til CALSS avgrenset med metodene ved kompileringstid. Polymorfismen for kompileringstid håndteres av kompilatoren, og den støtter konseptet overbelastning av metode.

Metodeoverbelastningen i polymorfisme av kompileringstid gjør at en klasse kan lage flere metoder med samme navn, men forskjellige implementeringer når det gjelder parametere. Og det finnes noen regler for disse parametrene som listet nedenfor:

Vi kan lage flere metoder med samme navn, men med en annen sekvens/parameters rekkefølge.

Vi kan lage mer enn en metode med samme navn, men med forskjellige datatyper av parametere:

Vi kan lage flere metoder med samme navn, men med et annet antall parametere.

La oss vurdere et eksempel for den dype forståelsen av polymorfisme av kompileringstid:

Eksempel

I dette eksemplet opprettet vi to klasser:

Multiplikasjon.Java

De Multiplikasjon Klasse lager tre metoder med samme navn "produkt()", Den første metoden tar to heltallverdier, den andre tar to doble verdier og den tredje tar tre heltallverdier:

pakkehoved;
offentlig klasse multiplikasjon
int produkt (int num1, int num2)
return num1 * num2;

dobbelt produkt (dobbelt num1, dobbelt num2)
return num1 * num2;

int produkt (int num1, int num2, int num3)
return num1 * num2 * num3;

Skjermbildet med overgitt kode vil være slik:

Hoved.Java

Innen Hoved Klasse, vi opprettet objektet for multiplikasjonsklasse og kalte alle tre metodene for Multiplikasjon klasse:

pakkehoved;
offentlig klasse Main
public static void main (String [] args)
Multiplikasjon obj = ny multiplikasjon ();
System.ute.println ("Resultat av to int -verdier:" + obj.produkt (5, 12));
System.ute.println ("Resultat av tre int -verdier:" + obj.produkt (4, 15, 2));
System.ute.println ("Resultat av doble verdier:" + obj.Produkt (5.5, 2.67));

Den komplette koden til Hoved Klasse vises i følgende figur:

Utgangen vil gå slik:

Fra output ovenfor observerer vi at:

Da vi passerte de to int verdier deretter produkt metode som har to int Parametere blir utført.

Da vi passerte de tre int verdier deretter produkt metode som har tre int Parametere blir utført.

Tilsvarende når vi passerte de to dobbelt verdier deretter produkt metode som har to dobbelt Parametere blir utført.

Dynamisk/runtime polymorfisme i java

I Runtime Polymorfisme, objektene er avgrenset med metodene ved kjøretid (dynamisk binding). Den dynamiske eller runtime -polymorfismen støtter begrepet Metode overstyrer.

  • I OOP refererer begrepet som overstyrer funksjonalitetene til eksisterende metoder.
  • I runtime -polymorfisme må typen og listen over parameteren være den samme i den overstyrte metoden.
  • Metodens returtype må være den samme i både superklasse og underklasse.
  • En foreldreklasse som har en metode erklært med endelig, privat eller statisk kan ikke overstyres i underklassen, men en statisk metode kan innhentes i barneklassen.

La oss se på det undergitte eksemplet for den dype forståelsen av runtime-polymorfisme.

Eksempel

Kodebiten nedenfor oppretter tre klasser: Person, ansatt, og Avdeling, de Person Klasse er en foreldreklasse, Ansatt Klassen strekker seg Person klasse og Avdeling Klassen avslutter Ansatt klasse.

klasseperson
public void print ()
System.ute.Println ("Dette er en personklasse");


klasseansatt utvider person
public void print ()
System.ute.Println ("Dette er en ansattklasse");


Klasseavdeling utvider ansatt
public void print ()
System.ute.Println ("Dette er avdelingsklasse");


offentlig klasse RuntimeExample
public static void main (String [] args)
Person per = ny person ();
Person emp = ny ansatt ();
Person Dept = Ny avdeling ();
per.skrive ut();
emp.skrive ut();
gjeld.skrive ut();

Barneteklassene utvider skrive ut() metode fra foreldreklassene og de har også sin egen implementering av den trykte () metoden. Og innenfor hovedmetoden lager vi gjenstand for hver klasse og kaller skrive ut() Metode med det respektive klasseobjektet. Den komplette koden og utgangen er gitt i følgende skjermbilde:

Ovennevnte utdata bekrefter at når vi kaller utskriftsfunksjonene med hvert barneklasseobjekt, overstyrer de implementeringen av foreldreklassen () -funksjonen ().

Konklusjon

Polymorfisme lar oss lage flere metoder med samme navn, men med forskjellige implementeringer i foreldre- og barneklasser. Det kan oppnås enten ved kompileringstid som støtter begrepet overbelastning av metode eller ved kjøretid som støtter begrepet overordnede. Denne oppskrivningen presenterer en detaljert oversikt over runtime og kompileringstidspolymorfisme, og den forklarer hva som er polymorfisme, dens typer og regler for å implementere hver type.