Sobes.tech
Junior

Wat is het verschil tussen erfelijkheid en polymorfisme?

sobes.tech AI

Antwoord van AI

Overerving is een mechanisme waarmee een klasse (subklasse, afgeleide klasse) velden en methoden van een andere klasse (superklasse, basisklasse) kan erven. Dit bevordert hergebruik van code.

Polymorfisme is het vermogen om één en hetzelfde interface te gebruiken om verschillende basale vormen te vertegenwoordigen. In de context van Java betekent dit dat een referentietypevariabele kan verwijzen naar een object van zijn eigen type of naar een object van elk van zijn subtypen. Er wordt onderscheid gemaakt tussen compileertijdpolymorfisme (method overloading) en runtimepolymorfisme (method overriding).

Het belangrijkste verschil:

  • Overerving definieert relaties tussen klassen (ouder-kind) en maakt hergebruik van code mogelijk.
  • Polymorfisme maakt het mogelijk om verschillende objecten via een gemeenschappelijke interface te benaderen, waarbij de juiste methode wordt uitgevoerd afhankelijk van het daadwerkelijke type van het object tijdens het uitvoeren.

Voorbeeld van runtimepolymorfisme:

class Animal {
    public void sound() {
        System.out.println("Dier maakt geluid");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Woef-woef");
    }
}

class Cat extends Animal {
    @Override
    public void sound() {
        System.out.println("Miauw-miauw");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Polymorfisme: variabele van type Animal die verwijst naar een Dog-object
        Animal myCat = new Cat(); // Polymorfisme: variabele van type Animal die verwijst naar een Cat-object

        myDog.sound(); // Roept de sound() methode van de Dog-klasse aan
        myCat.sound(); // Roept de sound() methode van de Cat-klasse aan
    }
}