Polymorfisme is een kenmerk van OOP's waarmee het object zich in verschillende omstandigheden anders kan gedragen. In C ++ hebben we twee soorten polymorfisme:
1) Compileer tijd polymorfisme - dit wordt ook wel statische (of vroege) binding genoemd.
2) Runtime Polymorphism - Dit wordt ook wel dynamische (of late) binding genoemd.
1) Compileer tijd polymorfisme
Functieoverbelasting en operatoroverbelasting zijn een perfect voorbeeld van Compile time polymorphism.
Compileer tijd Polymorfisme Voorbeeld
In dit voorbeeld hebben we twee functies met dezelfde naam maar een verschillend aantal argumenten. Op basis van het aantal parameters dat we doorgeven tijdens de functieaanroep, bepaalt welke functie moet worden aangeroepen. Daarom wordt het beschouwd als een voorbeeld van polymorfisme omdat de output in verschillende omstandigheden anders is. Omdat de oproep wordt bepaald tijdens de compilatie, daarom wordt deze compilatie polymorfisme genoemd.
# include <iostream> namespace std; gebruiken; class Toevoegen { openbaar: int sum (int num1, int num2) { retourneer num1 + num2; } int som (int num1, int num2, int num3) { terug num1 + num2 + num3; } }; int main () { Obj toevoegen; // Dit roept de eerste functie op cout << "Output:" << obj.sum (10, 20) << endl; // Hiermee wordt de tweede functie opgeroepen cout << "Output:" << obj.sum (11, 22, 33); terugkeer 0; } Output:
Uitgang: 30 Uitgang: 66
2) Runtime polymorfisme
Functie-override is een voorbeeld van Runtime-polymorfisme.
Functie opheffen : wanneer de kindklasse een methode declareert die al in de bovenliggende klasse aanwezig is, wordt dit functie opheffen genoemd, hier vervangt de kindklasse de bovenliggende klasse.
In het geval dat de functie wordt opgeheven, hebben we twee definities van dezelfde functie, één is de ouderklasse en één in de kindklasse. De aanroep van de functie wordt tijdens runtime bepaald om te beslissen welke definitie van de functie moet worden genoemd, dat is de reden waarom het runtime-polymorfisme wordt genoemd.
Voorbeeld van runtime-polymorfisme
# include <iostream> namespace std; gebruiken; klasse A, eerste klasse { openbaar: void disp () { cout << "Super Class-functie" << endl; } }; klasse B: openbaar A { openbaar: void disp () { cout << "Subklasse Functie"; } }; int main () { // Bovenliggend klasseobject Een obj; obj.disp (); // Object kindklasse B obj2; obj2.disp (); terugkeer 0; }
Output:
Super Class-functie Subklasse functie
Laat een reactie achter