Zoeken…
Invoering
Polymorfisme is een van de basisconcepten in OOP (Object Oriented Programming) . Hoofdidee van het polymorfisme is dat een object verschillende vormen kan aannemen. Om dat te bereiken (polymorfisme) hebben we twee hoofdbenaderingen.
Methode overbelasting
- Treedt op wanneer er twee of meer methoden zijn met dezelfde naam, met verschillende invoerparameters. Het retourtype moet hetzelfde zijn voor alle methoden met dezelfde naam
Methode overschrijven
- Treedt op wanneer het onderliggende object dezelfde methode-definitie gebruikt (dezelfde naam met dezelfde parameters), maar verschillende implementaties heeft.
Met behulp van deze twee benaderingen kunnen we dezelfde methode / functie gebruiken om ons anders te gedragen. Laten we hier meer details over bekijken in de volgende voorbeelden.
Methode Overbelasting
Overbelasting van methoden is de manier om polymorfisme binnen een klasse te gebruiken. We kunnen twee of meer methoden binnen dezelfde klasse hebben, met verschillende invoerparameters.
Verschil van invoerparameters kan zijn:
- Aantal parameters
- Type parameters (gegevenstype)
- Volgorde van de parameters
Laten we ze afzonderlijk bekijken (deze voorbeelden in Java, omdat ik er meer bekend mee ben - sorry daarvoor):
Aantal parameters
public class Mathematics { public int add (int a, int b) { return (a + b); } public int add (int a, int b, int c) { return (a + b + c); } public int add (int a, int b, int c, int c) { return (a + b + c + d); } }Kijk goed, je kunt zien dat het retourtype van de methode hetzelfde is -
int, maar daar hebben deze methoden een ander aantal ingangen. Dit wordt genoemd als methode voor het laden met een ander aantal parameters.PS: dit is slechts een voorbeeld , het is niet nodig om add-functies zoals deze te definiëren.
Type parameters
public class Mathematics { public void display (int a) { System.out.println("" + a); } public void display (double a) { System.out.println("" + a); } public void display (float a) { System.out.println("" + a); } }Merk op dat elke methode dezelfde naam en hetzelfde retourtype heeft, terwijl ze verschillende invoergegevenstypen hebben.
PS: dit voorbeeld dient alleen ter verduidelijking.
Volgorde van de parameters
public class Mathematics { public void display (int a, double b) { System.out.println("Numbers are " + a + " and " + b); } public void display (double a, int b) { System.out.println("Numbers are " + a + " and " + b); } }PS: dit voorbeeld dient ook uitsluitend ter verduidelijking.
Methode opheffen
Methode opheffen is de manier om polymorfisme tussen klassen te gebruiken. als de ene klasse van een andere klasse wordt geërfd, kan de eerstgenoemde (subklasse) de methoden van de laatstgenoemde (superklasse) overschrijven en de implementatie wijzigen.
dit wordt gebruikt wanneer de superklasse de meer algemene implementatie van de methode definieert, terwijl de subklasse een specifiekere methode gebruikt.
Overweeg het volgende voorbeeld:
We hebben een klas voor zoogdieren:
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
Dan hebben we een klas voor Dog, dat is een zoogdier:
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
In dit voorbeeld definiëren we de methode whoIam() in de klasse Mammal , waarbij het zoogdier zegt dat het een zoogdier is. Maar dit is een algemene term, want er zijn veel zoogdieren die er zijn. Dan kunnen we Dog klasse Dog overnemen van Dog klasse Mammal , aangezien Dog een zoogdier is. Maar om meer specifiek te zijn, hond is zowel een hond als een zoogdier. Daarom zou Dog moeten zeggen, I am a Mammal en ook I am a Dog . Daarom kunnen we de methode whoIam() in de superklasse (klasse Mammal , dat wil zeggen) uit de subklasse (de klasse Dog ) overschrijven .
We kunnen de methode van de super.whoIam() gebruiken met behulp van super.whoIam() in Java. Dan zal de Dog zich gedragen als een hond, terwijl hij zich ook gedraagt als een zoogdier.