logo

Polymorfi i Java

Ordet polymorfi betyder at have mange former. Med enkle ord kan vi definere Java Polymorphism som en beskeds evne til at blive vist i mere end én form. I denne artikel vil vi lære, hvad der er polymorfi og dets type.

Virkelig illustration af polymorfisme i Java : En person på samme tid kan have forskellige egenskaber. Ligesom en mand på samme tid er en far, en mand og en medarbejder. Så den samme person besidder forskellig adfærd i forskellige situationer. Dette kaldes polymorfi.

Hvad er polymorfisme i Java?

Polymorfi betragtes som et af de vigtige træk ved objektorienteret programmering. Polymorfi giver os mulighed for at udføre en enkelt handling på forskellige måder. Med andre ord giver polymorfi dig mulighed for at definere en grænseflade og have flere implementeringer. Ordet poly betyder mange og morphs betyder former, så det betyder mange former.



Typer af Java-polymorfi

I Java er polymorfi hovedsageligt opdelt i to typer:

  • Kompileringstidspolymorfi
  • Runtime polymorfisme

Kompileringstidspolymorfi i Java

Det er også kendt som statisk polymorfi. Denne type polymorfi opnås ved funktionsoverbelastning eller operatøroverbelastning.

smtp internet protokol

Bemærk: Men Java understøtter ikke Operator Overloading.

Java polymorfisme

Metode Overbelastning

Når der er flere funktioner med samme navn, men forskellige parametre, siges disse funktioner at være det overbelastet . Funktioner kan blive overbelastet af ændringer i antallet af argumenter eller/og en ændring i typen af ​​argumenter.

Eksempel 1:

Java




// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }>

>

>

Produktion

download youtube videoer vlc
8 34.65>

Eksempel 2:

Java




// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }>

>

>

Produktion

polymorfi java
8 42>

Undertyper af kompileringstidspolymorfi

1. Funktion Overbelastning

Det er en funktion i C++, hvor flere funktioner kan have samme navn, men med forskellige parameterlister. Compileren vil beslutte, hvilken funktion der skal kaldes, baseret på antallet og typen af ​​argumenter, der sendes til funktionen.

2. Operatør Overbelastning

Det er en funktion i C++, hvor operatorerne som +, -, * osv. kan gives yderligere betydninger, når de anvendes på brugerdefinerede datatyper.

3. Skabelon

det er en kraftfuld funktion i C++, der giver os mulighed for at skrive generiske funktioner og klasser. En skabelon er en plan for at skabe en familie af funktioner eller klasser.

Runtime Polymorphism i Java

Det er også kendt som Dynamic Method Dispatch. Det er en proces, hvor et funktionskald til den tilsidesatte metode løses ved Runtime. Denne type polymorfi opnås ved metodetilsidesættelse. Metode tilsidesætter , på den anden side opstår, når en afledt klasse har en definition for en af ​​medlemsfunktionerne i basisklassen. Den basisfunktion siges at være tilsidesat .

Eksempel

Java




// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }>

>

edith mack hirsch

>

Produktion

subclass1 subclass2>

Forklaring af ovenstående kode:

Her i dette program, når et objekt af en underordnet klasse er oprettet, kaldes metoden inde i underklassen. Dette skyldes, at metoden i den overordnede klasse tilsidesættes af den underordnede klasse. Da metoden er tilsidesat, har denne metode mere prioritet end den overordnede metode i den underordnede klasse. Så liget inde i børneklassen bliver henrettet.

Undertype af Run-time Polymorphism

jeg. Virtuelle funktioner

Det tillader et objekt af en afledt klasse at opføre sig, som om det var et objekt af basisklassen. Den afledte klasse kan tilsidesætte den virtuelle funktion af basisklassen for at give sin egen implementering. Funktionskaldet løses under kørsel, afhængigt af den faktiske type af objektet.

Diagram –

Typer af polymorfi i Java

Polymorfi i Java er et koncept, der tillader objekter af forskellige klasser at blive behandlet som objekter af en fælles klasse. Det gør det muligt for objekter at opføre sig anderledes baseret på deres specifikke klassetype.

Fordele ved polymorfi i Java

  1. Øger kodegenanvendelighed ved at tillade, at objekter af forskellige klasser behandles som objekter af en fælles klasse.
  2. Forbedrer læsbarheden og vedligeholdelsen af ​​kode ved at reducere mængden af ​​kode, der skal skrives og vedligeholdes.
  3. Understøtter dynamisk binding, hvilket gør det muligt at kalde den korrekte metode under kørsel, baseret på objektets faktiske klasse.
  4. Gør det muligt at behandle objekter som en enkelt type, hvilket gør det nemmere at skrive generisk kode, der kan håndtere objekter af forskellige typer.

Ulemper ved polymorfi i Java

  1. Kan gøre det sværere at forstå et objekts adfærd, især hvis koden er kompleks.
  2. Dette kan føre til ydeevneproblemer, da polymorf adfærd kan kræve yderligere beregninger under kørsel.