Sobes.tech
Junior

Wat is overerving en polymorfisme in referentietypen?

sobes.tech AI

Antwoord van AI

Overerving is een mechanisme waarmee een klasse (subklasse, afgeleide klasse) eigenschappen en gedrag van een andere klasse (superklasse, ouderklasse) kan overnemen. Dit bevordert hergebruik van code en het creëren van klassendiagrammen.

Polymorfisme is het vermogen van objecten van verschillende klassen om op verschillende manieren te reageren op dezelfde boodschap (methode-aanroep), afhankelijk van hun specifieke type. In de context van overerving uit zich dit vaak door het overschrijven van methoden van de basisklasse in de afgeleide klasse.

Voorbeeld (Java):

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

// Afgeleide klasse
class Dog extends Animal {
    @Override // Methode overschrijven
    public void makeSound() {
        System.out.println("Woef!");
    }
}

// Afgeleide klasse
class Cat extends Animal {
    @Override // Methode overschrijven
    public void makeSound() {
        System.out.println("Miauw!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Object Dog, maar referentie van type Animal
        Animal myCat = new Cat(); // Object Cat, maar referentie van type Animal

        myDog.makeSound(); // Roept de Dog-methode aan
        myCat.makeSound(); // Roept de Cat-methode aan
    }
}

In dit voorbeeld:

  • Overerving: De klassen Dog en Cat erven van Animal.
  • Polymorfisme: De variabelen myDog en myCat verwijzen naar respectievelijk Dog en Cat objecten, hoewel ze van het type Animal zijn. Bij het aanroepen van makeSound() wordt de methode van het object uitgevoerd, niet die van het referentietype.