Welke mechanismen voor het implementeren van polymorfisme bestaan er in Java?
sobes.tech AI
Antwoord van AI
-
Compileertijd polymorfisme (statisch polymorfisme): Wordt geïmplementeerd door method overloading. Methoden hebben dezelfde naam, maar verschillende handtekeningen (aantal, type of volgorde van argumenten).
class Calculator { // Overloading van de add-methode public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } -
Uitvoertijd polymorfisme (dynamisch polymorfisme): Wordt geïmplementeerd door method overriding. De methode in de subclass heeft dezelfde handtekening als de methode in de superclass en biedt een eigen implementatie. De beslissing welke methode wordt aangeroepen, wordt tijdens runtime genomen op basis van het daadwerkelijke objecttype.
class Animal { public void sound() { System.out.println("Dier maakt een geluid"); } } class Dog extends Animal { // Override van de sound-methode @Override public void sound() { System.out.println("Hond blaft"); } } class Cat extends Animal { // Override van de sound-methode @Override public void sound() { System.out.println("Kat miauwt"); } } -
Verwijzingen naar superklasse / interface: Objecten van subklassen kunnen worden toegewezen aan verwijzingen van superklassen of interfaces die ze implementeren. Dit maakt het mogelijk om objecten van verschillende typen op een uniforme manier te behandelen via een gemeenschappelijke verwijzing. Het aanroepen van een overschreven methode via zo'n verwijzing leidt tot de uitvoering van de versie van de methode van het daadwerkelijke objecttype.
Animal myAnimal = new Dog(); // Toewijzing van een Dog-object aan een Animal-verwijzing myAnimal.sound(); // Roept de overschreven sound() methode van de Dog-klasse aan